我能够在旧的传统Windows 控制台主机(CMD) 中运行一个简单的批处理文件,但是在新的Windows 终端中运行它时会引发错误并失败。
抛出的各种错误:
我尝试在新终端中将默认命令行更改为cmd / powershell ,但这没有任何效果。我认为该错误与在新终端中运行bat文件时找不到路径有关,尽管我不确定为什么会这样。
蝙蝠文件源代码:
@echo off
echo kill current binaries
cmd /c TASKKILL /F /IM nginx* > nul 2> nul
cmd /c TASKKILL /F /IM V-* > nul 2> nul
set DIR=binaries
PUSHD %DIR%
cd
FOR %%F IN (
V-DBV_*.exe
) DO start /w /b %%F
FOR %%F IN (
V-FC_*.exe
V-AGS_*.exe
V-T4CA_*.exe
V-FIO_*.exe
) DO start /b %%F > NUL
POPD
start /b nginx\nginx -c conf\nginx_generic_test.conf -p .\nginx
echo "test started"
尽管与 nginx 相关的错误被抛出,但据我所知,这个问题与nginx无关,因为bat文件在传统的Windows 控制台主机中执行得非常好。
如果有人对此问题有任何建议或解决方案,请告诉我。
您
Terminal
正在调用cmd.exe
(命令解释器)来执行来自您的指令file.bat
,并且由于cmd.exe
路径是C:\Windows\System32
,它没有找到您的文件夹以继续执行nginx
a\binary
和/或\nginx
子文件夹中的可执行文件。binaries
使用相对路径,否则请指定完整路径:%~dp0
pushd
start /d "D:\full\path
START /D
:%~dp0
请参阅什么
%~dp0
意思,它是如何工作的?
和set DIR=binariesPUSHD %DIR%您没有使用该
DIR
变量,您可以直接在pushd
命令中使用路径,此外您甚至不需要在发布的命令中使用此变量:PUSHD "%~pd0binaries"