cmd.exe /C 无法 运行 命令
cmd.exe /C unable to run the command
我正在 运行 宁下面的命令,如果我 运行 通过命令提示符手动
它工作成功
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.
这是我的命令 运行ning
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"
另见
- Windows command prompt: Using a variable set in the same line of a one-liner
- How set a variable and then use it in the same line in command prompt
- Setting and using variable within same command line in Windows cmd.exe
我正在 运行 宁下面的命令,如果我 运行 通过命令提示符手动
它工作成功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.
这是我的命令 运行ning
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"
另见
- Windows command prompt: Using a variable set in the same line of a one-liner
- How set a variable and then use it in the same line in command prompt
- Setting and using variable within same command line in Windows cmd.exe