Batch file 检查批处理文件中for循环内的文件名中是否有空格

Batch file 检查批处理文件中for循环内的文件名中是否有空格,batch-file,Batch File,我有一个批处理脚本,它正在调用VBscript文件。它将遍历监视文件夹中的所有文件 它需要验证文件名中是否有空格,如果有,则拒绝该文件,不使用VBS处理它 当我收到错误消息时,我必须在代码上有一个错误: 在这个时候,没有人料到会发生其他事情 我查看了文档并搜索了相当长一段时间的答案,包括以下问题: 但是,我仍然看不出我的语法有什么错误: @ECHO OFF setlocal ENABLEDELAYEDEXPANSION call :ReadIni Infolder inFolder call

我有一个批处理脚本,它正在调用VBscript文件。它将遍历监视文件夹中的所有文件

它需要验证文件名中是否有空格,如果有,则拒绝该文件,不使用VBS处理它

当我收到错误消息时,我必须在代码上有一个错误:

在这个时候,没有人料到会发生其他事情

我查看了文档并搜索了相当长一段时间的答案,包括以下问题:

但是,我仍然看不出我的语法有什么错误:

@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
任何帮助都将不胜感激

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

 ...

IF %ERRORLEVEL%==1 (
引用字符串会导致
cmd
将字符串视为单个实体

请注意,以下
if%errorlevel%
将使用
处的
errorlevel
值执行:startOOP
。(有关推理,请参见
延迟扩展

使用
if!错误等级==1(
(使用
vbs
例程建立的运行时值
errorlevel

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

请注意,以下
if%errorlevel%
将使用
处的
errorlevel
值执行:startOOP
(有关推理,请参阅
延迟扩展


通过使用
if!errorlevel!==1(
(使用
vbs
例程所建立的
errorlevel
的运行时值)来治愈。

谢谢。我也刚刚解决了这个问题。这就是我最后使用
if“!TESTNAME!”NEQ”!TESTNAME:=\(
谢谢你指出errorlevel中的错误。我把它改成了
如果errorlevel 1(
谢谢。我也刚刚弄明白了。这就是我最后使用
如果“!TESTNAME!”NEQ”!TESTNAME:=!!(
谢谢你指出了errorlevel中的错误。我把它改成了
如果errorlevel 1(