通过Git-Bash执行包含空格的"cmd"命令?

24 浏览
0 Comments

通过Git-Bash执行包含空格的"cmd"命令?

我正在尝试使用git-bash通过cmd来执行一个命令。我需要传递命令以供执行。问题是,我需要将批处理文件的路径传递给命令,而该路径中包含空格。我似乎无法以cmd能够理解的方式传递引号。

cmd //C "c:\Program Files (x86)\another path\file.bat args && echo done"

这将给我一个错误:

'C:\Program' 不是内部或外部命令,也不是可运行的程序或批处理文件。

如果我尝试使用单引号,那么它会将一个字面的反斜杠传递给cmd。

cmd //C '"c:\Program Files (x86)\another path\file.bat" args && echo done'

这将给我相同的错误,但会显示反斜杠:

'\"c:\Program Files (x86)\another path\file.bat\"' 不是内部或外部命令,也不是可运行的程序或批处理文件。

0
0 Comments

问题的原因是在使用Git-Bash执行包含空格的命令时出现了问题。这是因为在命令中包含空格会导致Git-Bash无法正确解析命令。

解决这个问题的方法有两种:

1. 第一种方法是通过使用CMD命令或改变路径来执行命令。可以通过使用cd命令导航到包含该文件的目录,然后运行命令并传递文件名。这样可以避免命令中包含空格的问题。

2. 第二种方法是直接引用脚本文件,而不使用CMD命令或改变路径。可以直接引用脚本文件,而无需使用CMD命令或改变路径。这样可以避免命令中包含空格的问题。

下面是使用第二种方法解决该问题的示例代码:

# 直接引用脚本文件,并传递文件名作为参数
./script.sh "file name with spaces.txt"

使用以上方法,可以在Git-Bash中成功执行包含空格的命令。

0
0 Comments

问题的原因是在使用Git-Bash执行包含空格的命令时,出现了错误。解决方法是使用Unix风格的路径,并加上双引号进行包裹。

根据给出的解决方法,在Git-Bash中执行命令$ CMD //C "/c/Program Files (x86)/Opera/New folder/a.bat",其中/c/Program Files (x86)/Opera/New folder/a.bat是要执行的命令的路径。

另外,对于简单的命令,不需要使用CMD /C来执行bat文件。在这种情况下,可以通过转义空格和括号来执行命令。例如:/c/Program\ Files\ \(x86\)/Test/New\ folder/a.bat

问题的提问者还补充说,他只希望环境变量存在于一个cmd实例中,而不是在Git-Bash中设置环境变量。他希望通过执行命令cmd /C "C:/path to/vcvarsall.bat && echo %LIB%"来设置环境变量,并通过执行echo $LIB来验证环境变量是否被正确设置。

然而,echo %LIB%在Git-Bash中无法正常工作,因为该命令使用的是Git的echo命令,而不是CMD的内置echo命令。解决方法是使用cmd //V //C "C:/path to/vcvarsall.bat&&set myvar"来执行命令,并在Bash会话中使用echo ${myvar}来验证环境变量是否正确设置。

对于Visual Studio的vcvarsall.bat批处理脚本无法在Git-Bash中正常工作的问题,可以尝试将所有需要执行的操作都包装在一个.bat文件中,该文件调用vcvarsall.bat并执行其他操作,而不是混合使用Windows和Bash命令。

,当在Git-Bash中执行包含空格的命令时,可以使用Unix风格的路径并加上双引号进行包裹。对于需要设置环境变量的情况,可以使用cmd //V //C "C:/path to/vcvarsall.bat&&set myvar"来执行命令,并在Bash会话中使用echo ${myvar}来验证环境变量是否正确设置。

0