如何解决cmd.exe /C 无法运行命令
如果我通过命令提示符手动运行它,我正在运行成功的命令
SET filename=testfile_26032021.txt && SET newfilename=%filename:~9,8% && copy C:\test\updatedtestfile_%newfilename%.txt C:\test\updatedtestfile_%newfilename%.txt.temp
但是当我通过外部调用运行它时,出现错误
The system cannot find the file specified.
这是我正在运行的命令
cmd.exe /C SET filename=testfile_26032021.txt && SET newfilename=%filename:~9,8% && copy C:\test\updatedtestfile_%newfilename%.txt C:\test\updatedtestfile_%newfilename%.txt.temp
我通过将标志从 /C 更改为 /K 来发现错误。
知道这个命令有什么问题吗?
解决方法
您不能这样做 SET filename=testfile_26032021.txt && SET newfilename=%filename:~9,8%
,因为 %filename%
在解析时已扩展,但尚不可用。您必须 enable delayed expansion 并告诉 cmd 稍后使用 !variable_name!
扩展命令。除了 &&
结束前一个命令,所以你的整个事情被解析为 3 个命令:
cmd.exe /C SET filename=testfile_26032021.txt
SET newfilename=%filename:~9,8%
copy C:\test\updatedtestfile_%newfilename%.txt C:\test\updatedtestfile_%newfilename%.txt.temp
所以你必须像这样引用命令
cmd.exe /V:on /C "SET "filename=testfile_26032021.txt" && SET "newfilename=!filename:~9,8!" && copy C:\test\updatedtestfile_!newfilename!.txt C:\test\updatedtestfile_!newfilename!.txt.temp"
或
cmd.exe /C "setlocal enabledelayedexpansion && SET filename=testfile_26032021.txt && SET newfilename=!filename:~9,8! && copy C:\test\updatedtestfile_!newfilename!.txt C:\test\updatedtestfile_!newfilename!.txt.temp"
另见
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。