在Linux的Windows子系统中执行批处理文件

在Linux的Windows子系统中执行批处理文件,windows,batch-file,windows-subsystem-for-linux,Windows,Batch File,Windows Subsystem For Linux,是否可以从Windows Linux子系统(如Ubuntu)执行.bat文件 从WSL运行.exe文件很简单,但我还没有找到运行.bat的简单方法。我找到的唯一方法是打开cmd.exe,但每次我需要执行.bat文件时,这都有点麻烦。不幸的是,目前,如果不使用以下两种方法之一,您就无法执行此操作: cmd.exe/c foo.bat …或使用binfmt进行以下攻击: sudo sh-c“echo:WindowsBatch:E::bat::/init:>/proc/sys/fs/binfmt\u

是否可以从Windows Linux子系统(如Ubuntu)执行
.bat
文件


从WSL运行
.exe
文件很简单,但我还没有找到运行
.bat
的简单方法。我找到的唯一方法是打开
cmd.exe
,但每次我需要执行
.bat
文件时,这都有点麻烦。

不幸的是,目前,如果不使用以下两种方法之一,您就无法执行此操作:

cmd.exe/c foo.bat
…或使用binfmt进行以下攻击:

sudo sh-c“echo:WindowsBatch:E::bat::/init:>/proc/sys/fs/binfmt\u misc/register”
然后您可以键入:

foo.bat
这种方法的问题是,您需要是root,每次打开bash窗口时都要运行它,可能对
.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运行它吧

很抱歉在这样一个旧的线程上发布,但我找到了一个解决方法(不确定它是否是因为更新而改变的,我将在2021年2月18日发布)。我发现运行CMD然后给它输入参数(链接到必要的批处理文件)是有效的——它也是一个接受构造的参数发送到该命令。所以在我的例子中(我在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//
路径)。

感谢您的确认。我担心情况就是这样。至少现在对我来说,
cmd.exe/cfoo.bat
命令已经足够好了。这就是我一直在寻找的。我需要这个来在Android Studio的终端中启动
gradlew.bat
,所以我在
~/.bashrc
中创建了一个别名:
别名gradlewin='cmd.exe/c gradlew.bat
'。