如何将Bash Shell脚本转换为.bat文件?

19

我在我的Mac上有一个bash shell脚本,需要将其转换为.bat文件(至少这是我被告知的),以便于PC用户使用。我想知道最好的方法是什么,或者是否有任何好的参考资料可供查询。我似乎没有用正确的问题问谷歌,以指引我走向正确方向。

具体来说,例如我如何进行...

cd ~/Documents/DropFolder

(...~/ 表示用户的主目录根目录,而不管用户名是什么)?

或者,在处理变量和"do"语句时...

for i in *.xml
do
  java -Xss650K -Xms128m -Xmx2048m -jar /Applications...
done

最后,识别和使用基本名称...

  cp -p `basename $i .xml`.xml ~/Documents/ReadyForServer/`basename $i .xml`/

感谢任何指导或其他解决方案的建议。


2
我认为这个链接对你有用。它包含了 shell 脚本和批处理文件的比较表格。http://tldp.org/LDP/abs/html/dosbatch.html - SANN3
1
发现了一个有用的工具,可以将Bash脚本转换为批处理文件 - https://www.javainuse.com/bash - Batman Rises
5个回答

17

实际上,你提到的这些东西很容易转移到Windows批处理文件中。虽然你当然可以使用所有Unix工具的Windows版本(甚至使用仿真层来获得更多乐趣),但这并不难做到:

  1. 用于用户主文件夹的~符号

    用户配置文件位于环境变量%USERPROFILE%中,因此以下内容应该可以解决问题:

cd %USERPROFILE%\Documents\DropFolder
  • 遍历一组文件

    for 命令在这里很有用:

  • for %%i in (*.xml) do -Xss650K -Xms128m -Xmx2048m -jar ... %%i
    

    显然,您需要调整JAR文件的路径。

    而且for有很多其他用途,因此还需要查看一下help for

    basename

    您需要在子例程或for循环中执行此操作,因为以下语法特定于循环变量或参数。它不会像原样使用环境变量。您可以通过使用%%~ni(其中%%i是循环变量或%~n1)获取basename提供给您的内容,如果%1是您拥有的子例程或批处理文件的参数,则为其参数。因此,以下代码可能会执行相同的操作:

    copy "%%~ni.xml" "%USERPROFILE%\Documents\ReadyForServer\%%~ni\"
    

    关于for的帮助文档在末尾有更多相关信息。


    7
    有没有转换工具? - M-Razavi

    7

    你也可以使用Git for Windows,它内置了一个Bash shell(GitBash)。


    这对我来说是开箱即用的 :D! - Ahmed Al-haddad

    4

    Windows shell是一种不同于bash shell的脚本语言。您需要进行移植。或者,您可以使用像cygwin或mingw这样的工具在Windows上运行bash shell。


    4
    第一句话其实很明显。第二句话虽然可能有帮助,但对他们现在想要的内容来说过于冗长了... - Joey

    1

    你应该手动转换。学习批处理命令,然后执行相应的操作。或者,你可以使用GNU win32 unix 工具。


    0

    在编写DOS风格的批处理文件时,Windows上的F1帮助非常有用。从Windows桌面上,按F1并搜索批处理。使用批处理参数的链接对于使用DOS进行奇怪的技巧非常有帮助。'使用批处理文件'页面也非常好。正如其他发帖者所提到的,最好避免使用批处理作为您的实现语言,但如果必须,那就必须。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接