Пакетный скрипт для чтения содержимого файла в массив - PullRequest
1 голос
/ 15 сентября 2010

H, ребята, используя пакетный скрипт Windows, я хочу передать команду x раз, каждый раз с другим аргументом, аргументы которого анализируются из файла.

Например, естьtextfile, говоря arg1 arg 2 arg3, пакетный скрипт проанализирует это и запустит

program.exe -arg1
program.exe -arg2
program.exe -arg3

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

Ответы [ 2 ]

1 голос
/ 15 сентября 2010

Хорошо, мы идем ... вспомните. Вы всегда должны предоставить 1 аргумент - исполняемый файл для вызова каждый раз. Вам также необходимо создать файл аргумента: args.txt по умолчанию, который должен иметь один аргумент на строку. Если аргумент имеет пробелы или специальные символы, он должен быть заключен в кавычки.

Источник: recall.bat

@echo off
setLocal EnableDelayedExpansion

::: recall.bat - Call an executable with a series of arguments
:::  usage: recall $exec [$argfile]
:::     exec - the executable to recall with arguments
:::     argfile - the file that contains the arguments, if empty will 
:::               default to args.txt
:::  argfile format:
:::    One argument per line, quote-escaped if there's spaces/special chars
if "%~1"=="" findstr "^:::" "%~f0"&GOTO:EOF

set argfile=args.txt
:: Reset argfile if supplied.
if "%~2" neq "" set argfile="%~2"
:: Remove quotes
set argfile=!argfile:"=!

for /f "tokens=*" %%G in (%argfile%) do (
  call %1 %%G
)

Пример:

args.txt

hello
world
"hello world"

Звоните:

recall echo args.txt

Выход:

hello
world
"hello world"
1 голос
/ 15 сентября 2010

Вы должны быть в состоянии использовать цикл for.Предполагая, что файл args.txt содержит параметры, тогда это должно работать:

for /f %a in (args.txt) do program.exe -%a

Редактировать В зависимости от используемого вами командного процессора, вам может потребоваться использовать два символа %в строке в команде, если вы запускаете вышеприведенный оператор в командном файле.Это не обязательно при использовании очень удобной командной строки JP Software .Тем не менее, я думаю, что это необходимо при использовании стандартных команд cmd.exe / command.com.

for /f %%a in (args.txt) do program.exe -%%a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...