创建用于Robocopy的环境变量时%cd:~0,2%无法识别,求解决
问题分析与解决方法
你的问题出在环境变量的解析机制上:当你把包含%cd:~0,2%的命令设为环境变量值后,CMD调用这个环境变量时,只会直接把变量值的字符串原样输出,不会对其中的%cd:~0,2%进行二次解析——也就是说Robocopy收到的路径是字面的%cd:~0,2%\folder1\folder2,自然识别不了这个无效路径。
两种可行的解决办法:
1. 改用批处理文件(推荐)
创建一个后缀为.cmd或.bat的文件,内容如下:
@echo off robocopy /e /v /A-:SH "%cd:~0,2%\folder1\folder2" "."
把这个文件放到系统PATH包含的目录里(比如C:\Windows\System32),之后在CMD里直接输入Test就能执行这条命令,批处理会正常解析%cd:~0,2%获取当前盘符。
2. 修改环境变量值(用延迟扩展强制解析)
如果一定要用环境变量,把变量值改成下面的格式:
cmd /v:on /c "robocopy /e /v /A-:SH "!cd:~0,2!\folder1\folder2" "."""
这里通过cmd /v:on启用延迟扩展,用!cd:~0,2!替代%cd:~0,2%,强制CMD在执行时解析当前盘符变量。不过这种写法需要注意引号转义,不如批处理直观可靠。
内容的提问来源于stack exchange,提问作者Tyrone Hirt
相关产品推荐
相关产品推荐

