检查批处理文件

时间:2018-02-16 16:47:11

标签: batch-file

我有一个调用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

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

IF NOT "!TESTNAME!"=="!TESTNAME: =_!" (

 ...

IF %ERRORLEVEL%==1 (

引用字符串会导致cmd将字符串视为单个实体。

请注意,将使用if %errorlevel%errorlevel的值执行以下:startloop。 (有关推理,请参阅delayed expansion。)

使用if !errorlevel!==1 (进行治疗。 (使用由errorlevel例程建立的vbs的运行时值。)