Batch file .bat文件中的特殊字符
每天我都会从公司的目录中获取文件,我正在自动化这个。。。但是目录名包含一个特殊字符“&”,我组装的脚本无法识别Batch file .bat文件中的特殊字符,batch-file,automation,Batch File,Automation,每天我都会从公司的目录中获取文件,我正在自动化这个。。。但是目录名包含一个特殊字符“&”,我组装的脚本无法识别 @Echo Off Set _Source=C:\Users\Rafae\Desktop\test&test Set _Dest=C:\Users\Rafae\Desktop\study Forfiles /D +0 /P %_Source% /C "cmd /c XCopy %_Dest%" pause 错误: “test”未被识别为内部命令 或外部,一
@Echo Off
Set _Source=C:\Users\Rafae\Desktop\test&test
Set _Dest=C:\Users\Rafae\Desktop\study
Forfiles /D +0 /P %_Source% /C "cmd /c XCopy %_Dest%"
pause
错误:
“test”未被识别为内部命令
或外部,一个可操作的程序或批处理文件。
错误:指定的目录不存在。
按任意键继续
有没有办法让cmd识别名称中包含“&”的文件夹?您需要转义
&
字符,因为它有特殊的含义
您可以使用插入符号对其进行转义,如Set\u Source=C:\Users\Rafae\Desktop\test^&test
或者引用
Set "_Source=C:\Users\Rafae\Desktop\test&test"
在本例中,我使用扩展集语法,在变量名之前加上引号,这将转义字符串,但不会将引号添加到变量中
如果使用这样的变量,则应始终引用结果,如
Forfiles /D +0 /P "%_Source%" ...
打开,运行
cmd/?
,从第一页的顶部到最后一页的底部,仔细、完整地阅读Windows命令处理器的输出用法帮助。当文件名或任何其他参数字符串必须包含在“
获取对cmd.exe具有特殊意义的字符
解释为文字字符,但%
和除外!”代码>启用延迟扩展。另请参阅和上一篇解释如果不在双引号参数字符串中如何解释&
。我建议使用第二行集“\u Source=C:\Users\Rafae\Desktop\test&test”
和第三行集“\u Dest=C:\Users\Rafae\Dest\study”
并作为第四行%SystemRoot%\System32\forfiles.exe/P“%\u Source%”/C”%SystemRoot%\System32\xcopy.exe@path\“%\u Dest%\\”
。但我真的不明白为什么您使用不推荐的文件
和xcopy
而不是%SystemRoot%\System32\robocy.exe
,这将使文件复制任务更容易编码,执行效率更高。在命令提示窗口中运行robocopy/?
,以获取有关此命令的帮助。谢谢,我将其放在引号中,它成功了。