【问题标题】:forfiles has space in folder pathforfiles 在文件夹路径中有空间
【发布时间】:2015-10-13 09:40:59
【问题描述】:

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

我的代码:

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 在文件夹路径中有空格?

像这样:E:\Logs_test\AddressBook Service

【问题讨论】:

  • 我尝试使用双引号,但不起作用。
  • 我找到了答案。我添加^0x22e,每个空格都添加^。像这样:forfiles /p %_path% /d -%_day% /m *.log /c "cmd /c xcopy @path ^0x22E:\Logs_test\AddressBook^ Service^0x22 /D /E /-Y"

标签: batch-file for-loop xcopy


【解决方案1】:
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"

上面的代码 sn-p 带有正确的 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" 语法中的双引号。

【讨论】:

  • \"forfiles 特定的" 转义,因此/C 开关后的命令从字面上接收";你也可以写0x22,这是十六进制。 "...的代码(ASCII)...
猜你喜欢
  • 1970-01-01
  • 2012-10-29
  • 2012-05-05
  • 1970-01-01
  • 2015-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多