Справка команды FOR выводится при запуске в открытом окне командной строки for /?
.
Вывод справки на нескольких страницах объясняется на первой странице:
Чтобы использовать команду FOR в пакетной программе, укажите вместо переменной %%
переменной%.Имена переменных чувствительны к регистру, поэтому% i отличается от% I.
И справка по выводу содержит также:
Кроме того, была заменена ссылка на переменную FOR.расширенный.
Теперь вы можете использовать следующий необязательный синтаксис:
%~I - expands %I removing any surrounding quotes (")
%~fI - expands %I to a fully qualified path name
%~dI - expands %I to a drive letter only
%~pI - expands %I to a path only
%~nI - expands %I to a file name only
%~xI - expands %I to a file extension only
%~sI - expanded path contains short names only
%~aI - expands %I to file attributes of file
%~tI - expands %I to date/time of file
%~zI - expands %I to size of file
%~$PATH:I - searches the directories listed in the PATH
environment variable and expands %I to the
fully qualified name of the first one found.
If the environment variable name is not
defined or the file is not found by the
search, then this modifier expands to the
empty string
Таким образом, командная строка, используемая непосредственно в окне командной строки для этой задачи:
for %I in (E:\QVD_to_CSV\QVDs\*.qvd) do @call CSV_Gene.bat "%~nI" E:\QVD_to_CSV\QVDs E:\QVD_to_CSV\CSVs
И та же самая командная строка в пакетном файле:
@echo off
for %%I in (E:\QVD_to_CSV\QVDs\*.qvd) do call CSV_Gene.bat "%%~nI" E:\QVD_to_CSV\QVDs E:\QVD_to_CSV\CSVs
Имя файла, содержащее пробел или один из этих символов &()[]{}^=;!'+,`~
необходимо заключить в двойные кавычки, что является причиной использования "%~nI"
соответственно "%%~nI"
.
Нет необходимости в отложенном расширении переменной среды для этой задачи.По этой причине этот специальный режим не используется для более быстрого выполнения пакетных файлов и обрабатывает также имена файлов с одним или несколькими восклицательными знаками.