【问题标题】:how to run .bat or .cmd files in bash for windows 10如何在 Windows 10 的 bash 中运行 .bat 或 .cmd 文件
【发布时间】:2017-11-28 01:59:08
【问题描述】:

我正在尝试从安装在 Windows 10 上的 bash shell 运行 glcoud.cmd。在 cmd 提示符下可以识别 Glcoud,但在“Windows 10 的 bash”中无法识别。

基于此线程,我创建了一个带有此条目的 .bashrc 文件 (Can I use gcloud in Git Bash on Windows?):

PATH=$PATH:/mnt/c/Users/username/AppData/Local/Google/Cloud SDK/google-cloud-sdk/bin

glcoud.cmd 是一个 Windows 命令行脚本。似乎该路径已被 bash 识别,因为当我运行 gcloud.cmd 时它会返回

/mnt/c/Users/***/AppData/Local/Google/Cloud SDK/google-cloud-sdk/bin/gcloud.cmd: line 1: @echo: command not found
/mnt/c/Users/***/AppData/Local/Google/Cloud SDK/google-cloud-sdk/bin/gcloud.cmd: line 2: rem: command not found
/mnt/c/Users/***/AppData/Local/Google/Cloud SDK/google-cloud-sdk/bin/gcloud.cmd: line 7: syntax error near unexpected token `newline'
/mnt/c/Users/***/AppData/Local/Google/Cloud SDK/google-cloud-sdk/bin/gcloud.cmd: line 7: `rem <cloud-sdk-cmd-preamble>'

我也尝试了以下命令,因为 CYGWIN 似乎会自动识别 bat 文件

cmd.exe gcloud.cmd
cmd gcloud.cmd 
cmd gcloud
cmd /c gcloud
cmd /c glcoud.cmd

以上所有命令都返回:

找不到命令“cmd”,您的意思是: 来自包“diffutils”的命令“cmp”(主) 来自包“wml”(宇宙)的命令“wmd” 来自包“devscripts”的命令“dcmd”(主) 来自包“mtools”的命令“mcd”(主) 来自包'core-network-daemon'(universe)的命令'vcmd' 来自包“openjdk-7-jdk”(主)的命令“jcmd” 来自包“tcm”(宇宙)的命令“tcmd” 来自包“config-manager”(universe)的命令“cm” 来自包“libconfig-model-perl”(universe)的命令“cme” 来自包“am-utils”(宇宙)的命令“amd” 来自包“renameutils”(宇宙)的命令“icmd” 来自包“mtools”的命令“mmd”(主) 来自包“renameutils”(universe)的命令“qcmd”

如何在 bash 上运行 windows 命令?

谢谢

保罗

【问题讨论】:

  • 我没有在 Windows 上使用过 bash,所以不知道这是否可行,但是您是否尝试过 cmd /c gcloud 或类似的,所以 gcloud 命令将在 cmd shell 中执行而不是直接在bash shell 中?
  • 是的.. 我只是在想这个。似乎 CYGWIN 在本机解释器 (stackoverflow.com/questions/787522/…) 中自动运行 .bat 文件。我试过以下 cmd.exe gcloud.cmd; cmd gcloud.cmd; cmd gcloud; cmd /c gcloud; cmd /c glcoud.cmd
  • 人们很难在 cmets 中找到信息,而且它们的格式不正确,相反,请edit 您的问题包含更新的尝试,包含确切的信息可能会有所帮助可用时的错误消息,而不是“它不起作用”的变体。
  • 您是否尝试过使用 cmd.exe 的完整路径?如/mnt/c/windows/system32/cmd.exe /C gcloud.cmd 您可能还希望将 /mnt/c/windows/system32/ 包含到您的 PATH 中

标签: windows bash gcloud


【解决方案1】:

您需要指定 cmd.exe 的完整路径。

我在 ~/.bash_aliases 中添加了以下内容:

alias cmd='/mnt/c/Windows/System32/cmd.exe /c'

您可以通过以下方式运行 *.bat 文件:

$ cmd ./test.bat

【讨论】:

  • 别名方法有效,但是您必须调整路径,因为cmd 将无法理解./test.bat。因此,如果您在批处理文件所在的目录中,则必须简单地传递 test.bat 而没有 ./,或者您需要传递完整路径,ie 使用这样的命令:cmd 'C:\MyFolder\MySubfolder\test.bat'.
【解决方案2】:

很抱歉将此作为答案发布,但我还不能发表评论。我在想也许你可以有一个调用 bash 脚本的批处理文件,然后一旦它们退出,它就开始 bat 文件,然后启动更多的 bash 脚本?您也可以将代码拆分...只是一个想法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    相关资源
    最近更新 更多