在windows批处理文件中运行bash命令

在windows批处理文件中运行bash命令,bash,shell,batch-file,cmd,sh,Bash,Shell,Batch File,Cmd,Sh,是否可以在批处理脚本中运行msysbash命令?假设我有a.bat文件,因为我有windows批处理命令,在一行中,我将切换到msysbash以处理msys指定的命令。像这样: [...] batch commands [...] C:\mingw\msys\1.0\bin\sh -l mount 'C:\mingw\local32' /local32 [...] bash commands [...] 谢谢你的帮助 为什么不把所有shell命令放在一个单独的文件中,然后在一行中从批处

是否可以在批处理脚本中运行msysbash命令?假设我有a.bat文件,因为我有windows批处理命令,在一行中,我将切换到msysbash以处理msys指定的命令。像这样:

[...] 
batch commands 
[...]
C:\mingw\msys\1.0\bin\sh -l
mount 'C:\mingw\local32' /local32
[...] 
bash commands 
[...]
谢谢你的帮助


为什么不把所有shell命令放在一个单独的文件中,然后在一行中从批处理文件中调用该脚本呢

C:\mingw\msys\1.0\bin\sh your-msys-script.sh

为什么不将所有shell命令放在一个单独的文件中,然后在一行中从批处理文件中调用该脚本呢

C:\mingw\msys\1.0\bin\sh your-msys-script.sh

我现在找到了一个更好的方法:我使用mintty控制台,我认为它也可以与其他控制台一起工作。mintty位于msys/1.0/bin下,有一个快捷方式我指向mintty,参数为:/bin/sh-l。现在我可以从批处理文件参数发送到该快捷方式。例如:mintty.lnk script.sh

我现在发现了一个更好的方法:我使用mintty控制台,我认为它也可以与其他控制台一起工作。mintty位于msys/1.0/bin下,有一个快捷方式我指向mintty,参数为:/bin/sh-l。现在我可以从批处理文件参数发送到该快捷方式。例如:mintty.lnk script.sh

A.sh文件与Windows操作系统中的批处理文件类似,如果基于Linux的Windows操作系统已激活,则可以在Windows中运行。因此,要使用Windows Subsystem for Linux在Windows 10中运行.SH文件,如果您的Linux子系统尚未安装,请执行以下操作:

转到开发人员设置>更新和安全>。选中开发者模式单选按钮。然后搜索“Windows功能”,选择“打开或关闭Windows功能”。 滚动以查找WSL,选中该框,然后安装它。完成后,必须重新启动以完成所请求更改的安装。现在按重新启动。BASH将在命令提示符和PowerShell中可用

执行bash脚本文件

打开命令提示符并转到包含.sh文件的文件夹。 键入Bash script-filename.sh并按enter键。 它将执行脚本,根据文件的不同,您将看到一个输出。

我的bash文件(state.sh)包含以下脚本:

并作为文本:

echo "Current state:"
UPSTREAM=${1:-'@{u}'}
LOCAL=$(git rev-parse @)
REMOTE=$(git rev-parse "$UPSTREAM")
BASE=$(git merge-base @ "$UPSTREAM")

if [ $LOCAL = $REMOTE ]; then
echo "Up-to-date"
elif [ $LOCAL = $BASE ]; then
echo "Need to pull"
elif [ $REMOTE = $BASE ]; then
echo "Need to push"
else
echo "Diverged"
fi
运行包含bash脚本文件的批处理文件

您可以在下图中看到如何从批处理文件启动bash文件:

@echo off
START  /wait ./state.sh
echo            . . . . . . . . . . . . . . . . . . . .
echo               'The program executed successfully!'
echo            . . . . . . . . . . . . . . . . . . . .
现在,批处理文件已准备好执行


希望这个答案能帮助那些寻找类似问题解决方案的人。

一个.SH文件类似于Windows操作系统中的批处理文件,如果基于Linux的Windows操作系统被激活,它可以在Windows中运行。因此,要使用Windows Subsystem for Linux在Windows 10中运行.SH文件,如果您的Linux子系统尚未安装,请执行以下操作:

转到开发人员设置>更新和安全>。选中开发者模式单选按钮。然后搜索“Windows功能”,选择“打开或关闭Windows功能”。 滚动以查找WSL,选中该框,然后安装它。完成后,必须重新启动以完成所请求更改的安装。现在按重新启动。BASH将在命令提示符和PowerShell中可用

执行bash脚本文件

打开命令提示符并转到包含.sh文件的文件夹。 键入Bash script-filename.sh并按enter键。 它将执行脚本,根据文件的不同,您将看到一个输出。

我的bash文件(state.sh)包含以下脚本:

并作为文本:

echo "Current state:"
UPSTREAM=${1:-'@{u}'}
LOCAL=$(git rev-parse @)
REMOTE=$(git rev-parse "$UPSTREAM")
BASE=$(git merge-base @ "$UPSTREAM")

if [ $LOCAL = $REMOTE ]; then
echo "Up-to-date"
elif [ $LOCAL = $BASE ]; then
echo "Need to pull"
elif [ $REMOTE = $BASE ]; then
echo "Need to push"
else
echo "Diverged"
fi
运行包含bash脚本文件的批处理文件

您可以在下图中看到如何从批处理文件启动bash文件:

@echo off
START  /wait ./state.sh
echo            . . . . . . . . . . . . . . . . . . . .
echo               'The program executed successfully!'
echo            . . . . . . . . . . . . . . . . . . . .
现在,批处理文件已准备好执行


希望这个答案能帮助那些寻找类似问题解决方案的人。

是的,我以前尝试过,但后来我失去了msys环境的所有路径。也许我找到了一个解决方案:C:\mingw\msys\1.0\bin\sh-l your-msys-script.sh也许我想这样做。是的,我以前尝试过,但后来我丢失了msys环境中的所有路径。也许我找到了一个解决方案:C:\mingw\msys\1.0\bin\sh-l your-msys-script.sh也许我想这样做。不要将文本作为图像发布不要将文本作为图像发布