我需要将一些.sh
shell脚本转换为可以在Windows环境中运行的Windows本机脚本,而无需使用任何外部软件,如cygwin,migwin等。
我知道Windows 10有适用于Linux的Windows子系统(WSL),但它处于测试版状态并且使用它我们需要启用开发人员模式。
我的一些选项是将它们转换为批处理文件或Powershell脚本,但是我需要找到每个等效的CMD / PS命令,这需要很长时间。
在Windows上运行shell脚本有什么快捷方式吗?
答案 0 :(得分:2)
您唯一的选择是:
WSL,正如您所指出的那样 - 但它已不再处于测试阶段。
安装类似CygWin的内容。
将* ix shell脚本转换为批处理,PowerShell,VBScript或JScript。如果您使用PowerShell,在寻找等价物方面可能会有更好的运气。是的,这需要一些时间和研究,但任何类型的脚本翻译的成本将是一个学习曲线;即使有自动化工具,结果也会非常不理想。 PowerShell采用与其他shell明显不同的模型,与管道相关;如果你试图写入传统模型而不是按照预期使用PowerShell,你会发现你的挫折程度一直存在。
通过最严格的定义,您的仅选择" Windows本机脚本"是上面的选项3;其他人不是" Windows原生脚本&#34 ;;他们实现了非Windows工具,允许您针对Windows资源运行* ix shell脚本(通常是bash,而不是sh,csh,zsh等)。
答案 1 :(得分:0)
我建议使用适用于Linux的Windows子系统,因为它已经普遍可用且不再处于测试阶段。
您可以通过PowerShell安装它:
bash.exe myscript.sh
安装完成后,您可以交互式执行脚本或通过bash传递,例如:
[Files]
Source: "C:\...\Service.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\...\log4net.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:...\Service.exe.config"; DestDir: "{app}"; Flags: ignoreversion
[Run]
Filename: {sys}\sc.exe; \
Parameters: "create Service start= auto binPath= ""{app}\Service.exe"""; \
Flags: runhidden
[UninstallRun]
Filename: {sys}\sc.exe; Parameters: "stop Service"; Flags: runhidden
Filename: {sys}\sc.exe; Parameters: "delete Service"; Flags: runhidden
更多信息:https://docs.microsoft.com/en-us/windows/wsl/install-win10