Ваша строка for %%i in (dir %1\*.%2 /A:A /S ) do ...
неверна в нескольких отношениях.
Вы хотите обработать вывод команды: добавьте /f
и введите в кавычки команду.
Вы считаете каждую строку выходных данных (включая заголовок и сводку: добавьте /b
, чтобы перечислить только имена файлов.
, если в ваших параметрах есть пробелы, произойдет сбой: используйте %~n
удалить все окружающие кавычки и указать полный путь.
Таким образом, в целом, строка, вероятно, должна быть:
for /f %%i in ('dir /b "%~1\*.%~2" /A:A /S') do ...
См. for /?
и dir /?
для получения подробной информации.
(а точнее, вы должны также добавить "delims="
, чтобы получить все имя файла вместо его первого слова, но, поскольку вы просто подсчитываете строки, это ничего не изменит)
Другойвещь: if not exist %1 (echo "This folder does not exist"
является неоптимальным. Если параметр не был задан, %1
пусто, if
приводит к if not exist (echo
(попытка найти файл с именем (echo
, и команда, которая будет выполнена, будет "This folder does not exist"
что приводит к сообщению об ошибке '"This folder does not exist"' is not recognized as an internal or external command, operable program or batch file.
Безопасный синтаксис: if not exist "%~1" (echo ...