在 Windows 子系统中为 Linux 执行批处理文件
Execute Batch file in Windows Subsystem for Linux
是否可以从 Windows 子系统为 Linux(例如 Ubuntu)执行 .bat
文件?
从 WSL 中 运行 一个 .exe
文件很简单,但我还没有找到 运行 一个 .bat
的简单方法。我找到的唯一方法是打开 cmd.exe
,但每次我需要执行 .bat
文件时这样做有点麻烦。
不幸的是,目前您不能不使用:
cmd.exe /c foo.bat
…或以下使用 binfmt 的 hack:
sudo sh -c "echo :WindowsBatch:E::bat::/init: > /proc/sys/fs/binfmt_misc/register"
然后您只需输入:
foo.bat
此方法的问题是您需要成为 root,运行 每次打开 bash window,可能会执行.cmd
文件也一样,我想,任何以 .bat
结尾的 bash 脚本名称都可能有问题!
我想在 Microsoft 处理此问题之前,您仅限于上述内容。
如果第一个答案不起作用,请尝试:
sudo sh -c "echo :WindowsBatch:E::bat::/init: > /proc/sys/fs/binfmt_misc/register"
然后,找到文件。然后使文件可执行:
chmod +x foo.bat
然后运行文件:
./foo.bat
如果它说权限被拒绝,只需尝试 运行使用 sudo
将其连接
很抱歉 post 在这样一个旧线程上,但我找到了解决它的方法(不确定它是否因更新而改变,我 post 在 18/02/2021 ).我发现 运行 CMD 然后向它提供参数(到 link 到必需的批处理文件)是有效的——它也是一个接受构造的参数发送到该命令。所以就我而言(我在 10 Pro 上的 WSL 中使用 Debian 10.8):
/mnt/c/windows/system32/cmd.exe /mnt/c/temp/batchfile.bat "-arga -argb -argc"
我认为这可能是相当一致且可行的解决方法(仅以 C:\temp\bathfile.bat
为例,只需根据您的需要使用相对 /mnt/<drv>/<dir>/<batchfile>
路径)。
是否可以从 Windows 子系统为 Linux(例如 Ubuntu)执行 .bat
文件?
从 WSL 中 运行 一个 .exe
文件很简单,但我还没有找到 运行 一个 .bat
的简单方法。我找到的唯一方法是打开 cmd.exe
,但每次我需要执行 .bat
文件时这样做有点麻烦。
不幸的是,目前您不能不使用:
cmd.exe /c foo.bat
…或以下使用 binfmt 的 hack:
sudo sh -c "echo :WindowsBatch:E::bat::/init: > /proc/sys/fs/binfmt_misc/register"
然后您只需输入:
foo.bat
此方法的问题是您需要成为 root,运行 每次打开 bash window,可能会执行.cmd
文件也一样,我想,任何以 .bat
结尾的 bash 脚本名称都可能有问题!
我想在 Microsoft 处理此问题之前,您仅限于上述内容。
如果第一个答案不起作用,请尝试:
sudo sh -c "echo :WindowsBatch:E::bat::/init: > /proc/sys/fs/binfmt_misc/register"
然后,找到文件。然后使文件可执行:
chmod +x foo.bat
然后运行文件:
./foo.bat
如果它说权限被拒绝,只需尝试 运行使用 sudo
将其连接很抱歉 post 在这样一个旧线程上,但我找到了解决它的方法(不确定它是否因更新而改变,我 post 在 18/02/2021 ).我发现 运行 CMD 然后向它提供参数(到 link 到必需的批处理文件)是有效的——它也是一个接受构造的参数发送到该命令。所以就我而言(我在 10 Pro 上的 WSL 中使用 Debian 10.8):
/mnt/c/windows/system32/cmd.exe /mnt/c/temp/batchfile.bat "-arga -argb -argc"
我认为这可能是相当一致且可行的解决方法(仅以 C:\temp\bathfile.bat
为例,只需根据您的需要使用相对 /mnt/<drv>/<dir>/<batchfile>
路径)。