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

5

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

CALL mv *.exe foo.exe

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

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

2个回答

2
如果您的电脑中有mv,那么可能附近也有sh.exebash.exe。这时就很容易了:
sh.exe -c "mv *.exe foo.exe"

CMD解释器不像Unix shell一样展开通配符:命令自己决定是否展开。也许内置的ren命令会展开通配符,但我不确定。

1
我通常可以在哪里找到“sh.exe”?我可能需要更新我的PATH。 - user1508893
1
你在哪里找到 mv 命令?我认为 sh 或 bash 可能在同一个位置。嗯,也许不是。顺便说一句,我刚刚在 Wine 的 CMD.EXE 上尝试了带通配符的 "ren" 命令,它可以工作 - 所以在真正的 Windows 上试试吧。 - Anton Kovalenko

2
在Windows中,除非调用另一个批处理脚本,否则不需要使用“call”。您可能还想使用“move”命令;这将在Windows中正确地插入*。
例如,如果您使用具有以下内容的脚本:
move *.exe foo.exe

在IT技术中,您可以得到如下结果:

这个结果看起来是这样的:

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>

给您所期望的行为!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接