我如何将这个.sh脚本转换为Windows可执行文件(.bat)?

我如何将这个.sh脚本转换为Windows可执行文件(.bat)?

很久以前,我创建了一个 shell 脚本来创建嵌套目录结构,现在我想在我的 Windows 机器上使用它。有没有简单的方法来转换这些脚本?或者我应该使用一些快速技巧?

#!/bin/sh
echo "Enter name of csv file"
read name
echo "Enter the PREFIX for the directory"
read prefix
c=$(echo $prefix | awk -F"/" '{print $NF}')
a=`cat ./$name`
for b in $a
do
mydir=$(echo $b | tr -d '\r' | sed -e 's/,*$//g'| sed -e 's/,/\//g')
mydir2=$(echo $mydir | sed -e 's/\//\/'$c'/g')
mydir1=$prefix$mydir2
mkdir -p $mydir1
echo "Created : `pwd`/$mydir1"
done

答案1

以下内容可以作为起点:https://daniel-sc.github.io/bash-shell-to-bat-converter/

免责声明:我创建了这个工具。我知道它还远远不够完善。欢迎 PR/帮助 :)

答案2

除了手动重写脚本外,实际上没有其他神奇的方法来转换脚本。由于 Windows 命令提示符的限制,这可能并不总是 100% 可行。

但是,与其转换脚本,也许您可​​以获得一个可以执行它的 Windows 程序。如果您使用的是 Windows 10,您可以简单地使用新的 Linux 子系统。有上百万个网页解释了如何执行此操作,因此您应该能够通过简单的网络搜索找到信息。

如果您没有运行 Windows 10,我建议您使用与 Windows 兼容的 Borne Again SHell 和 Un*x 工具版本(特别是、、awk和,因为上述脚本似乎需要这些)。MinGW 有两者的良好版本,您可以从以下网址获取(捆绑在一起)catsedtr这里。运行安装程序,您将看到一个名为“MinGW 安装管理器”的窗口,其中有各种可以安装的软件包。“msys-base”应该是您唯一需要的(除非您计划编译源代码),因此请在它旁边的框中打勾。然后,转到“安装”菜单,选择“应用更改”,并在出现的窗口中单击“应用”。假设您在默认目录(C:\MinGW)中安装了 MinGW,bash 应该位于C:\MinGW\msys\1.0\bin\bash.exe。您可以使用这个 exe 文件来运行您的 shell 脚本。

答案3

虽然您的示例很容易转换为 BAT,但您会因 Windows 的最大弱点而失败:缺乏工具。没有tr、、等。sedgrep

否则它非常简单。Echo不需要替换,cattype,而是$等等%,但正如我所说,由于 Windows 中缺少工具,您的方法将无法工作。

答案4

@echo off
set /p name="Entrez le nom du fichier CSV : "
set /p prefix="Entrez le PRÉFIXE pour le répertoire : "

for /f "usebackq delims=" %%b in ("%name%") do (
    set "mydir=%%b"
    setlocal enabledelayedexpansion
    set "mydir=!mydir:~0,-1!"
    set "mydir=!mydir:,=\!"
    set "mydir2=!mydir:/=\%~n1!"
    set "mydir1=%prefix%!mydir2!"
    mkdir "!mydir1!"
    echo Created : %cd%\!mydir1!
    endlocal
)

相关内容