Windows批处理中的通配符(星号)

时间:2013-01-04 18:33:44

标签: windows cmd wildcard

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

CALL mv *.exe foo.exe

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

那我应该怎么重写这个命令呢? 感谢

2 个答案:

答案 0 :(得分:2)

在Windows中,除非调用另一个批处理脚本,否则不需要使用“调用”。您也可能想要使用'move'命令;这将在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>

准确地说明你正在寻找的行为!

答案 1 :(得分:1)

如果mv可用,可能您附近有sh.exebash.exe。然后很容易:

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

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