Batch file 批处理文件到当前目录的相对路径
我正在做一些批处理脚本,通过文件循环复制。但是我遇到了一个问题,我需要相对于当前.bat执行文件夹(%cd%)的路径 如果我有这样的文件: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
- c:\games\batchTest\test.bat
- c:\games\batchTest\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
而构建的,因此如果您不确定,我建议您使用它。