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

Batch file 批处理文件到当前目录的相对路径,batch-file,Batch File,我正在做一些批处理脚本,通过文件循环复制。但是我遇到了一个问题,我需要相对于当前.bat执行文件夹(%cd%)的路径 如果我有这样的文件: c:\games\batchTest\test.bat c:\games\batchTest\subFolder1\test1.txt 如何获取“subFolder1\test1.txt”,以便将文件与子文件夹一起复制 我当前的代码: for /r %%a in (*) do ( echo "%%a" ) 您可以尝试以下方法: @Echo Off

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

如果我有这样的文件:

  • c:\games\batchTest\test.bat
  • c:\games\batchTest\subFolder1\test1.txt
如何获取“subFolder1\test1.txt”,以便将文件与子文件夹一起复制

我当前的代码:

for /r %%a in (*) do ( 

echo "%%a"

)
您可以尝试以下方法:

@Echo Off
Setlocal enabledelayedexpansion 
For /r %%a In (*) Do (
  Set p="%%a"
  Echo !p:%__CD__%=!
)
始终返回绝对路径,即使
/R
后面的(可选)给定根目录是相对的

获取相对路径的一种可能方法是(错误地)将与其防止复制任何内容的
/L
选项一起使用:

xcopy/L/S/I.\*.“%TEMP%”
要删除摘要行
#文件
,请使用以下命令应用筛选器:

xcopy/L/S/I.\*.“%TEMP%”查找“
要处理退回的项目,请使用:

for/F“eol=|delims=“%%F in('
xcopy/L/S/I“\*.“%TEMP%”查找“\”
""做"(
回显处理文件“%%F”。。。
)

如果您只想复制包含子目录结构的文件,您甚至不需要使用
for
循环的上述内容,只需使用
xcopy

xcopy/S/I“D:\Source\*.*”D:\Destination
或:

robocopy/S“D:\Source”“D:\Destination”“**”

在cmd.exe中,键入/?在For循环期间,阅读有关扩展路径相关变量的信息。复制完整路径的效果应与复制相对路径的效果相同。也许你应该更详细地解释你的任务。我正在尝试将所有文件从folderA复制到folderB,保留子目录,因此我需要过滤掉一些文件。对于循环或相对路径,你可能不需要
。如果打开一个命令提示窗口,输入
xcopy/?
robocoy/?
,通读它们的使用信息,然后选择其中任何一个,这可能足以满足您的需要
Robocopy
是较新的,是为了取代
xcopy
而构建的,因此如果您不确定,我建议您使用它。