我的 Windows 脚本(.cmd 文件)中有这个命令:
CALL mv *.exe foo.exe
通配符似乎根本不会被解释为通配符,因为在执行脚本时,它会抛出一个关于找不到具有名称的文件*.exe
(字面意思是 *.exe)的错误。顺便说一下,当前目录中有一个 .exe 文件。
那么我应该如何重写这个命令呢?谢谢
如果mv
有的话,也许你有sh.exe
或bash.exe
附近有。然后很简单:
sh.exe -c "mv *.exe foo.exe"
与 unix shell 不同,CMD 解释器不会扩展通配符:命令自己执行(或不执行)它。也许内置ren
命令会扩展通配符,但我不确定。
在 Windows 中,除非调用另一个批处理脚本,否则您不需要使用“调用”。您可能还想改用“移动”命令;这将在 Windows 中正确插入 *。
例如,如果您使用的脚本具有:
move *.exe foo.exe
在其中,您会得到如下结果:
C:\dev\example>dir /B
a.exe
mymove.cmd
C:\dev\example>mymove
C:\dev\example>move *.exe foo.exe
C:\dev\example\a.exe
1 file(s) moved.
C:\dev\example>dir /B
foo.exe
mymove.cmd
C:\dev\example>
准确给出您正在寻找的行为!