Недавно я включил аналогичную строку в файл .cmd:
for /f %%f in ('dir /b .\directory\*.sql') DO sqlcmd -b -o ".\directory\output\%%f.txt" -i ".\directory\%%f"
Первоначально я использовал только% f, и он работал нормально при запуске из командной строки, но не при запуске через файл. Когда я переключился на %% f, он работал с файлом. Просто интересно, в чем разница.
batch-file
cmd
Тайлер
источник
источник
В DOS вы не могли использовать переменные среды в командной строке, только в пакетных файлах, где они использовали
%
знак в качестве разделителя. Если вам нужен буквальный%
знак в пакетном файле, например, вecho
операторе, вам нужно его удвоить.Это было перенесено в Windows NT, которая позволяла использовать переменные среды в командной строке, однако для обратной совместимости вам все равно нужно удвоить ваши
%
знаки в файле .cmd.источник