[英]Batch file relative path to current dir
我正在做一些 BATCH 脚本循环遍历要复制的文件。 但是我遇到了一个问题,我需要相对于当前 .bat 执行文件夹 (%cd%) 的路径
所以如果我有这样的文件:
我怎样才能得到“subFolder1\\test1.txt”以便我可以用子文件夹复制文件?
我目前的代码:
for /r %%a in (*) do (
echo "%%a"
)
for /R
循环始终返回绝对路径,即使/R
后面的(可选)给定根目录是相对的。
获取相对路径的一种可能方法是(错误地)使用xcopy
命令及其/L
选项,以防止复制任何内容:
xcopy /L /S /I ".\*.*" "%TEMP%"
要删除摘要行# File(s)
使用find
using a pipe应用过滤器:
xcopy /L /S /I ".\*.*" "%TEMP%" | find ".\"
要处理返回的项目,请使用for /F
循环:
for /F "eol=| delims=" %%F in ('
xcopy /L /S /I ".\*.*" "%TEMP%" ^| find ".\"
') do (
echo Processing file "%%F"...
)
如果您只想复制包含子目录结构的文件,您甚至不需要for
循环的上述内容,您可以简单地使用xcopy
:
xcopy /S /I "D:\Source\*.*" "D:\Destination"
或robocopy
:
robocopy /S "D:\Source" "D:\Destination" "*.*"
你可以试试这个:
@Echo Off
Setlocal enabledelayedexpansion
For /r %%a In (*) Do (
Set p="%%a"
Echo !p:%__CD__%=!
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.