forfiles 在文件夹路径中有 space

forfiles has space in folder path

我想尝试 bat 文件将我的日志复制到其他 space。

我的代码:

REM get date
FOR /F "tokens=1-4 delims=/ " %%a IN ("%date%") DO (SET _MyDate=%%d/%%b/%%c)
echo _MyDate: %_MyDate%    
set _path= "D:\Logs\AddressBook Service"
set _path2= "E:\Logs_test\AddressBook Service"
forfiles /p %_path% /d -%_day% /m *.log /c "cmd /c xcopy @path %_path2%"

我的问题是如何解决 forfiles @path has spaces in folder path?

像这样:E:\Logs_test\AddressBook Service

set "_day=2"                             only my guess
set "_path=D:\Logs\AddressBook Service"
set "_path2=E:\Logs_test\AddressBook Service"
forfiles /p "%_path%" /d -%_day% /m *.log /c "cmd /c echo xcopy @path \"%_path2%\\" /D /E /-Y"

上面带有正确 escaped " 双引号的代码片段(令人惊讶的是使用反斜杠 \" 而不是普通插入符转义)应该会导致类似于

xcopy "D:\Logs\AddressBook Service\some name.log" "E:\Logs_test\AddressBook Service\" /D /E /-Y

请注意,操作 xcopy 仅用于调试目的。在调试后立即删除 echo 关键字。
xcopy 目标文件夹 (%_path2%\) 添加尾部反斜杠似乎是兼性(可选)补充。
最后,注意 set "variablename=variable value" 语法中的双引号。