繁体   English   中英

批处理文件到当前目录的相对路径

[英]Batch file relative path to current dir

我正在做一些 BATCH 脚本循环遍历要复制的文件。 但是我遇到了一个问题,我需要相对于当前 .bat 执行文件夹 (%cd%) 的路径

所以如果我有这样的文件:

  • c:\\games\\batchTest\\test.bat
  • c:\\games\\batchTest\\subFolder1\\test1.txt

我怎样才能得到“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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM