如何从命令提示符批处理文件将参数传递给 WSL?

问题描述 投票:0回答:2

我正在尝试制作一个执行以下操作的批处理文件:

  1. cd 到我电脑中的特定目录。
  2. 进入 WSL Ubuntu。
  3. 运行带有一些参数的二进制文件。
  4. 关闭命令提示符终端。

我写了一个小测试批处理文件。它尝试执行指定的操作。唯一的问题是,一旦打开 bash 终端(在同一窗口中),它就不会执行下一行,直到我手动“退出”WSL,然后尝试错误地运行“./PESQ”行(如它应该是)。

cd C:/users/jesus/desktop/source/audio
::desired path
bash
::this opens up an ubuntu terminal like session inside CMD
./PESQ
::this is the compiled file, besides, there are more arguments that need to be in that line, (+16000 speech.wav speech_bab_0dB.wav)
pause

运行代码时,我得到以下输出

C:\Users\jesus\Desktop\source\audio>bash
jesusb@LAPTOP-08IGLCO1:/mnt/c/Users/jesus/Desktop/source/audio$

一旦输入

exit
,我就会得到以下输出

C:\Users\jesus\Desktop\source\audio>./PESQ
'.' is not recognized as an internal or external command, operable program or batch file.

C:\Users\jesus\Desktop\source\audio>pause
Press any key to continue . . .`

如何向 bash 终端发出

./PESQ +16000 speech.wav speech_bab_0dB.wav
命令?

batch-file windows-10 windows-subsystem-for-linux
2个回答
1
投票

不要使用

bash
,而是在批处理文件中使用
wsl
命令:

wsl ./PESQ +16000 speech.wav speech_bab_0dB.wav

0
投票

我可以对已经给出的答案进行补充,如果您在 WSL 中有多个发行版,则可以使用此 Windows 命令行启动 WSL 实例:

wsl -d Ubuntu-22.04-wsl1 -u petrose --cd "~"

哪里 -d 参数表示启动哪个实例 -u 参数表示应该从哪个用户开始

与上述无关,但可能感兴趣: 即使我已经定义了 WSL 默认启动来指示 WSL1,它似乎也不会影响正在启动的实例。 我确实尝试使用 --set-version 来表示我的发行版应该是 WSL 1,但该命令以错误 0xd0000022 结束。

© www.soinside.com 2019 - 2024. All rights reserved.