Rya*_*Fox 16 cygwin command-line windows-xp
我想在工作时将 Cygwin 用于我的主 shell,但我的团队使用批处理文件来处理多个进程。有人告诉我,我可以cmd /c batch.bat从 Cygwin 运行批处理文件。这适用于某些情况,而不适用于其他情况。当我这样做时,其中一个批处理文件完全失败,但是当我从 cmd shell 运行它时工作正常。
我注意到的另一个奇怪之处是,如果我cmd /?从 Cygwin运行,则没有输出。从 cmd shell 运行它会提供标准帮助。即使做也cmd /c cmd /?没有输出。如果我cmd从 Cygwin 运行,它会给我 cmd shell,然后如果我运行cmd /?,我会得到帮助文本,但没有分页符。
我想接下来要尝试的是找到一种在其自己的不同窗口中实际启动 cmd 的方法,就好像您已转到“开始”->“运行”,然后键入“cmd”一样。有没有办法从 Cygwin 内部做到这一点?
Gil*_*il' 14
您可以直接从 Cygwin shell 运行批处理文件,甚至不需要对cmd. 如果批处理文件需要参数,则需要以 Windows 方式引用它们;运行可能更简单cmd /c 'foo.bat "quoted arguments"'。
您没有说在哪个终端中运行 shell。批处理文件本身并不关心这一点,但从批处理文件中执行的命令可能会关心。Cygwin 终端模拟器不模拟 Windows 控制台,因此它们适用于 Cygwin 程序和仅 stdio 程序,但不适用于 Windows 控制台程序。
如果在 Cygwin 终端(例如 rxvt 或 mintty)中正常运行 Cygwin shell,您可以在单独的 Windows 控制台中使用start foo.bat. 您可能希望运行Console2作为 Windows 控制台的更好替代品,并在 Console2 中运行 Windows 控制台应用程序,并在 Cygwin 终端(甚至在 Console2 中)中运行 Cygwin 应用程序。
cmd /?是一个红鲱鱼:Cygwin 根目录中大概有一个字符长的目录,因此 shell 扩展/?并cmd使用碰巧不产生任何输出的开关运行。
/?bash 将其视为一种模式,其中问号将适合单个字符,因此如果您的 Cygwin 根目录中有任何单字母文件或目录,则该模式将被替换。echo /?会告诉你是否发生了这种情况。您可以使用反斜杠转义问号:/\?。或引用整个论点:'/?'。
cygstart c:/windows/system32/cmd 将在其自己的窗口中启动 cmd.exe。