【问题标题】:How do I convert a bash shell script to a .bat file? [closed]如何将 bash shell 脚本转换为 .bat 文件? [关闭]
【发布时间】:2018-11-26 09:54:27
【问题描述】:

我的 Mac 上有一个 bash shell 脚本,我需要为 PC 上的用户转换为 .bat 文件(至少,这是我被告知的)。我想知道解决这个问题的最佳方法,或者是否有人知道任何好的参考资料。我似乎没有向 Google 提出正确的问题来为我指明正确的方向。

具体来说,我该怎么做……

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`/

感谢您提供任何指导或对其他解决方案的建议。 罗

【问题讨论】:

标签: bash shell scripting batch-file


【解决方案1】:

实际上,您提到的内容对于移植到 Windows 批处理文件是微不足道的。虽然您当然可以使用所有 Unix 工具的 Windows 端口(或者甚至使用仿真层来获得更多乐趣),但这并不难做到:

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

    用户的配置文件位于环境变量%USERPROFILE% 中,因此应该执行以下操作:

    cd %USERPROFILE%\Documents\DropFolder
    
  2. 迭代一组文件

    for 命令在这里很有帮助:

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

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

    除此之外,for 还有更多用途,所以也请看看help for

  3. 基本名称

    您需要在子例程或for 循环中执行此操作,因为以下语法特定于循环变量或参数。它不能按原样使用环境变量。您可以通过使用%%~ni 获得basename 给您的信息,其中%%i 如果循环变量或%~n1 如果%1 是您拥有的子例程或批处理文件的参数。所以以下可能会做同样的事情:

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

    for 的帮助在结尾处提供了有关这些内容的更多信息。

【讨论】:

  • 有转换工具吗?
【解决方案2】:

您还可以使用 Git for Windows,它已经内置了 Bash shell (GitBash)

【讨论】:

  • 这对我来说是开箱即用的:D!
【解决方案3】:

windows shell 是一种不同于 bash shell 的脚本语言。您将需要移植它。或者,您可以使用 cygwin 或 mingw 之类的工具在 Windows 上运行 bash shell。

【讨论】:

  • 第一句话其实很明显。第二个是 - 虽然可能有帮助 - 对他们想要的东西来说太过分了......
【解决方案4】:

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

【讨论】:

    【解决方案5】:

    Windows 上的 F1 帮助在编写 DOS 样式的批处理文件时非常有用。在 Windows 桌面上,按 F1 并搜索批处理。 Using Batch Parameters 的链接对于使用 DOS 进行奇怪的技巧非常有帮助。 “使用批处理文件”页面也相当不错。正如其他海报所提到的,您最好避免使用批处理作为您的实现语言,但如果必须,您必须这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-19
      • 2014-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多