windows - 在 Windows Shell 中将包含 *(星号)字符的字符串作为命令行参数传递

标签 windows shell windows-shell

我正在寻找一种通过命令行将包含“*”字符的字符串传递给可执行文件的方法。

  command.exe 3*2

我想传递字符串 3*2。 Windows 所做的是在当前目录中搜索与文件掩码“3*2”匹配的文件,并将找到的任何文件传递给 command.exe

将“3*2”放在双引号之间没有帮助,仍然是同样的问题。

我也试过 '3*2'(在单引号之间),但是整个字符串(包括单引号)都被传递了,这不是我需要的。

有什么方法可以将字符串 3*2(不带任何引号)传递给命令吗?

最佳答案

在 Windows 命令 shell 中,您执行的命令负责扩展参数中存在的任何通配符。这种行为不同于 Unix 和 friend ,其中通配符扩展通常由 shell 完成。

一个简单的例子证明了这一点。

Windows(Windows 7):

C:\Users\Frank>echo *
*

如您所见,该命令输出的参数与命令行传入的参数完全相同。

Linux(CentOS Linux 5 上的 bash):

> echo *
centos-release-5-0.0.el5.centos.2.i386.rpm centos-release-notes-5.0.0-2.i386.rpm glibc-2.5-12.i386.rpm glibc-common-2.5-12.i386.rpm virtualmin-install.log

这里的通配符参数被 shell 替换为当前目录中的文件/目录列表。

因此,如果您的可执行文件通过扩展通配符来处理它们,您将无能为力。具体行为取决于您的命令。

如果您提供有关您的命令和您想要实现的目标的更多详细信息,我们可能会提供更多帮助。

关于windows - 在 Windows Shell 中将包含 *(星号)字符的字符串作为命令行参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2374566/

相关文章:

bash - 将 shell 配置为始终在新行上打印提示,例如 zsh

windows - 与 Windows 外壳集成

C++ 显示一个图标覆盖所有空文件夹

windows - 颜色问题

windows - GetModuleHandle() 是如何工作的?

java - Java读取USB打印机状态

c++ - IShellLink::SetIconLocation 将我的图标路径转换为错误的 %Program Files%

windows - 如何在 Windows 中使用 ssh 隧道

linux - 我如何在 linux 中使用 shell 创建名称类似于 number-number 的文件夹

Java 次要/更新版本检查