我正在编写一个批处理脚本来从目录中提取视频文件
到目前为止,它将进入与特定名称匹配的目录。然后我在该目录中的每个项目上执行FOR
循环。我想检查一个项目是否是一个目录(我以前做过),如果是,那么进入该目录,否则做其他事情。
问题是第二个IF
语句(检查项目是否是目录)正在破坏批处理脚本,给出错误:
)此时出人意料
如果我删除了IF
,代码会按预期执行(我已清楚地标记了代码中的IF
语句)...
CODE:
@ECHO off
SET title=%1
SET mp4=".mp4"
SET mkv=".mkv"
SET avi=".avi"
SET minimumSize=300
SET needCompressingDir="E:\Documents\Films\Need_compressing"
CD %needCompressingDir%
FOR /f "delims=" %%i IN ('DIR /B') DO (
IF %%i == %title% (
IF EXIST %%i (
CD %%i
FOR /f "delims=" %%j IN ('DIR /B') DO (
rem this 'IF' statement breaks it
IF EXIST %%j (
) ELSE (
)
)
) ELSE (
MOVE %%i %needCompressingDir%
)
)
)
答案 0 :(得分:2)
阅读if /?
:
Performs conditional processing in batch programs. IF [NOT] ERRORLEVEL number command IF [NOT] string1==string2 command IF [NOT] EXIST filename command … command Specifies the command to carry out if the condition is met. Command can be followed by ELSE command which will execute the command after the ELSE keyword if the specified condition is FALSE The ELSE clause must occur on the same line as the command after the IF. For example: IF EXIST filename. ( del filename. ) ELSE ( echo filename. missing. )
您可以看到command
部分if
强制性部分。else
和cmd
部分。 Windows .bat
/ ()
解释程序不接受空命令块REM
:它不被视为命令。至少使用 FOR /f "delims=" %%j IN ('DIR /B') DO (
rem this 'IF' statement breaks it
IF EXIST "%%~j\" (
rem directory
) ELSE (
rem not directory
)
)
注释(一个没有效果的命令):
IF EXIST "%%~j\"
已更新:使用{{1}}(备注反斜杠)检查该项是否为目录。