Задержка ошибок расширения
Я играю с пакетными файлами и отложенными расширениями.
Я просто пытаюсь напечатать имена файлов / папок всех элементов в каталоге.
@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
Когда я сделаю это, я получу ошибку:
Синтаксис этой команды неверен
Единственное, о чем я могу думать, это то, что я неправильно использую отложенное расширение.
1 ответ
Причина синтаксической ошибки заключается в том, что ::
не для комментариев. Они на самом деле метки маркеров. использование REM
для комментариев.
Другие вопросы...
Удалить пробелы вокруг =
SET item=%%i
Вам также не нужно использовать отложенное расширение, если вы используете call.
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:, в этом случае вам это не нужно).