从 c# 或 .cmd 提示符执行 .sh

Execute .sh from c# or .cmd prompt

我想从 c# 或通过命令提示符(我可以通过 c# 进一步执行)执行以下 shell 脚本命令“.sh”

我通常使用以下命令来执行我的.sh 文件。

我手动执行的命令是

a) 打开 cygwin(依次调用 C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico -)。这将打开 cygwin 控制台

b) 使用

转到我需要执行 .sh 文件的工作目录
cd <dir in unix format>

c) 执行.sh脚本文件

sh <path to my .sh file in unix format>

但是,我想使用命令行/c# 自动执行这些步骤 (即在不打开 console/apps 的情况下执行,如 mintty.exe 或 bash.exe)

注意:How do i start Mintty and run a script file? 中提供的示例对我没有帮助,因为它们在打开后没有执行我的命令就关闭了。

您可以 运行 直接使用 bash 脚本,使用 C:\cygwin\bash。

示例:c:\cygwin\bin\bash --login "C:\foo.bsh"

如果您还想要 mintty window(在使用 vt100 转义序列时很有用),您可以使用批包装文件。

@echo off
setlocal EnableDelayedExpansion
set "script=%~1"
set "cygwin=C:\cygwin64\bin"
set "path=!cygwin!;!path!"
mode con lines=80 cols=120

REM C:\cygwin\bin\mintty
start "cygwin window" !cygwin!\mintty.exe -i /cygdrive/c/Windows/System32/compstui.dll,53 --exec "!script!"

您应该(至少)将 cygwin/bin 目录作为路径变量的前缀,否则您会得到奇怪的结果

-i ...compstui.dll,53仅用于更改taskbar/window

中的图标