Пакетный файл Windows, в котором строки из файла используются для создания аргументов в команде

Возможный дубликат:
Как перебирать каждую строку в текстовом файле с помощью командного файла Windows?

Необходимо использовать большой список имен файлов для создания аргумента, который поступает в приложение, вызываемое из командной строки Windows. Я пытаюсь сделать все это из пакетного файла Windows.

Пока у меня есть это:

dir C:\javascripts /a-d /b /s >FileListing.txt

Это создает файл с именем "FileListing.txt", содержимое которого выглядит следующим образом:

C:\javascripts\index.js
C:\javascripts\other_javascripts.js
...
C:\javascripts\helper.js

Следующее, что мне нужно сделать, это вызвать исполняемый файл, который использует эти имена файлов в качестве аргументов следующим образом:

java -jar compiler.jar --js=C:\javascripts\index.js 
                       --js=C:\javascripts\other_javascripts.js 
                       ... 
                       --js_output_file=compiled_javascripts.js

Это для использования с компилятором google javascript. Задача состоит в том, чтобы взять все эти javascript-файлы, минимизировать и скомпилировать их в один файл.

Как мне добавить эти имена файлов в аргументы командной строки?

Большое спасибо!


person Chris Dutrow    schedule 29.07.2012    source источник


Ответы (1)


Ну вот:

@echo off
setlocal enabledelayedexpansion
set JAVA_CMD=java -jar compilar.jar
for /f "tokens=*" %%f in (FileListing.txt) do set JAVA_CMD=!JAVA_CMD! --js=%%f
set JAVA_CMD=!JAVA_CMD! --js_output_file=compiled_javascripts.js

:: Invoke the command
!JAVA_CMD!


Предложение по улучшению:
Удалите текстовый файл и вызовите команду dir из цикла (обратите внимание на пропущенный /s), например:

for /f "tokens=*" %%f in ('dir C:\javascripts /a-d /b') do set JAVA_CMD=!JAVA_CMD! --js=%%f

... остальная часть скрипта остается прежней.

person Eitan T    schedule 29.07.2012
comment
@ChrisDutrow Рад помочь! Обратите внимание, что я добавил "tokens=*", чтобы извлечь всю строку из файла. В противном случае он будет извлекать только первое слово из каждой строки (что тоже нормально, если у вас нет пробелов в именах файлов). - person Eitan T; 29.07.2012