我正在尝试制作一个执行以下操作的批处理文件:
我写了一个小测试批处理文件。它尝试执行指定的操作。唯一的问题是,一旦打开 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
命令?
不要使用
bash
,而是在批处理文件中使用 wsl
命令:
wsl ./PESQ +16000 speech.wav speech_bab_0dB.wav
我可以对已经给出的答案进行补充,如果您在 WSL 中有多个发行版,则可以使用此 Windows 命令行启动 WSL 实例:
wsl -d Ubuntu-22.04-wsl1 -u petrose --cd "~"
哪里 -d 参数表示启动哪个实例 -u 参数表示应该从哪个用户开始
与上述无关,但可能感兴趣: 即使我已经定义了 WSL 默认启动来指示 WSL1,它似乎也不会影响正在启动的实例。 我确实尝试使用 --set-version 来表示我的发行版应该是 WSL 1,但该命令以错误 0xd0000022 结束。