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