我有一个调用VBscript文件的批处理脚本。它通过监视文件夹中的所有文件重复。
它需要验证文件名中是否包含空格,如果是,则拒绝该文件,而不是使用VBS处理它。
我收到错误信息时,我的代码必须有错误:
此时并不期待ELSE。
我查看了文档并在相当长的一段时间内搜索了答案,包括这个问题:check "IF" condition inside FOR loop (batch/cmd)
但是,我仍然无法在语法中看到错误:
@ECHO OFF
setlocal ENABLEDELAYEDEXPANSION
call :ReadIni Infolder inFolder
call :ReadIni Outfolder outFolder
echo %inFolder%
echo %outFolder%
pause
:StartLoop
FOR %%I in (%inFolder%\*.srt) DO (
ECHO %%I
ECHO %%~nxI
SET TESTNAME=%%~nxI
ECHO !TESTNAME!
ECHO !TESTNAME: =_!
PAUSE
IF NOT !TESTNAME!==!TESTNAME: =_! (
move "%~sdp0%%~nxI" "%outFolder%\ERROR_IN_FILE_NAME_%%~nxI"
) ELSE (
copy /y "%%I" "%~sdp0%%~nxI"
%~sdp0SRToffset.vbs "%~sdp0%%~nxI" "%~sdp0%%~nxI"
IF %ERRORLEVEL%==1 (
Goto StartLoop
) else (
move "%~sdp0%%~nxI" "%outFolder%\"
move "%~sdp0QC_%%~nxI" "%outFolder%\"
del "%%I"
)
)
)
timeout /t 1
goto StartLoop
:ReadIni
FOR /F "tokens=2 delims==" %%a in ('find "%~1=" config.ini') do set %~2=%%a
exit /b
任何帮助都将不胜感激。
答案 0 :(得分:2)
IF NOT "!TESTNAME!"=="!TESTNAME: =_!" (
...
IF %ERRORLEVEL%==1 (
引用字符串会导致cmd
将字符串视为单个实体。
请注意,将使用if %errorlevel%
处errorlevel
的值执行以下:startloop
。 (有关推理,请参阅delayed expansion
。)
使用if !errorlevel!==1 (
进行治疗。 (使用由errorlevel
例程建立的vbs
的运行时值。)