我有一个包含以下内容的文本文件:
“C:\ Folder A \ Test.txt”
我需要将某些文件及其各自的容器复制到目录中的新目录,但只能复制我指定的文件及其父文件夹结构。
在我的批次中:
for /f "delims=" %%a in (C:\audit\test.txt) do (
robocopy "%%~dpa" "Z:\" "%%~nxa" /E /COPY:DAT /PURGE /MIR /R:1000000 /W:30
)
pause
然而,它没有使用robocopy,可能与尾部反斜杠有关。 Source被混淆并显示文件夹和Z:。这意味着来自%%~nxa
的文件名是目标的一部分而不是要复制的文件。有任何想法吗?
答案 0 :(得分:2)
在这种情况下,反斜杠被视为转义字符,因为它紧跟在结束"
之前。如果将.
附加到路径,结果将是相同的路径,但反斜杠将不再在结束"
之前,因此不会被视为结束引号的转义字符。< / p>
在示例中,您发布的源路径和目标路径都以\
结尾。因此,您需要向两者添加.
:
for /f "delims=" %%a in (C:\audit\test.txt) do (
robocopy "%%~dpa." "Z:\." "%%~nxa" /E /COPY:DAT /PURGE /MIR /R:1000000 /W:30
)
pause
答案 1 :(得分:0)
/ MIR将递归复制目录结构,甚至是在test.txt中不包含文件名的目录。 请不要在第一个参数中使用双引号。 / R:1000000 / W:30 / COPY:DAT是默认值,因此无需明确设置tehm。
请尝试下面的代码:
for /f "tokens=* delims=" %%a in (C:\audit\test.txt) do (
robocopy %%~dpa "Z:\" "%%~nxa" /E /PURGE /MIR
)
pause
如果您在文件路径中使用空格和/或特殊符号,则可以尝试以下代码,使用复制命令:
@echo off
for /f "tokens=* delims=" %%a in (C:\audit\test.txt) do (
if not exist "Z:\%%~pa" mkdir "Z:\%%~pa"
copy /Y "%%~a" "Z:\%%~pnxa"
)