5

我的 Windows 脚本(.cmd 文件)中有这个命令:

CALL mv *.exe foo.exe

通配符似乎根本不会被解释为通配符,因为在执行脚本时,它会抛出一个关于找不到具有名称的文件*.exe(字面意思是 *.exe)的错误。顺便说一下,当前目录中有一个 .exe 文件。

那么我应该如何重写这个命令呢?谢谢

4

2 回答 2

2

如果mv有的话,也许你有sh.exebash.exe附近有。然后很简单:

sh.exe -c "mv *.exe foo.exe"

与 unix shell 不同,CMD 解释器不会扩展通配符:命令自己执行(或不执行)它。也许内置ren命令会扩展通配符,但我不确定。

于 2013-01-04T18:38:49.847 回答
2

在 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>

准确给出您正在寻找的行为!

于 2013-01-04T18:52:10.720 回答