我正在玩批处理文件和延迟扩展 我只是试图打印目录中所有项目的文件/文件夹名称。
@ECHO off
SET title=%1
SET mp4="mp4"
SET mkv="mkv"
SET avi="avi"
SET minimumSize=300
CD "E:\Documents\Films\Need_compressing"
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%i IN (*) DO (
SET item = %%i
ECHO !item!
:: print dir/file name
:: if "!i!" == "%title%" (
:: echo "found file!"
:: 'if' directory
:: if exist "%title" (
:: echo "is a directory"
:: cd %title%
:: echo "title: " %title%
:: for %%f in (*.*) do (
:: set file = %%f
:: set extension = %%~xf
:: set fileSize = %%~zf
:: if %extension% == %mp4% if %extension% == %mkv% if %extension% == %avi% (
:: if %fileSize% gtr %minimumSize% (
:: move %file% %compressFolder%
:: )
:: )
:: )
:: )
::)
)
ENDLOCAL
当我这样做时,我会收到错误:
此命令的语法不正确
我唯一能想到的是我错误地使用了延迟扩展。
答案 0 :(得分:3)
语法错误的原因是因为::
不是用于评论。它们实际上是标签标记。使用REM
进行评论。
其他问题......
删除=
周围的空格SET item=%%i
如果使用呼叫,也不必使用延迟扩展。
CALL ECHO %%item%%
另外,请记住,此FOR
命令仅显示文件(无文件夹)。如果您想要文件夹和文件,只需使用DIR /B
(否FOR
)。如果您想要处理它们,可以使用FOR /F
,如下所示:
FOR /F "delims=" %%a IN ('DIR /B') DO ( echo do stuff with "%%~a" )
(编辑)
根据您更新的文件,您可能还希望使用CD /D
切换到您的E :(除非您已经使用E:,在这种情况下您不需要它)。