Команды и переменные командного файла Windows - PullRequest
1 голос
/ 08 июня 2011

Я не уверен, возможно ли это, но мне нужен простой файл bat / cmd, который работает в Windows 7 и выполняет следующие действия:

Шаг 1. findstr - он должен найти определенную строку, используя механизм регулярных выражений. Предположим, мы ищем число, заключенное в теги <id>123</id> (предположим, что такой файл уникален, поэтому возвращается одно значение). Команда выведет 123 на экран, но мне нужно сохранить его в переменной (не знаю как).

Шаг 2. Еще один вызов findstr в другом каталоге. Теперь мы хотим найти файл NAME (опция /m), содержащий значение, которое мы сохранили на шаге 1 (в другой группе файлов, то есть в другом каталоге). И снова, сохраните результат (имя файла) в переменной. Скажем, file_123.txt соответствует критериям.

Шаг 3. Скопируйте файл, который мы получили в результате второго findstr вызова (file_123.txt), в другое место.

Весь вопрос сводится к вопросу о том, как сохранить результат команд Windows в переменные, чтобы иметь возможность предоставлять эти значения для последующих команд в качестве параметров.

Ответы [ 2 ]

3 голосов
/ 08 июня 2011

Общий способ получения вывода команды в переменных:

for /f %%x in ('some command') do set Var=%%x

(с различными вариациями, в зависимости от контекста и того, что именно требуется).

Что касается ваших шагов, я уточню после обеда. Есть некоторые тонкости.

0 голосов
/ 23 июня 2011

Шаг 1:

FOR /F "USEBACKQ tokens=1-20 delims=<>" %%A in (`FINDSTR "123" "path of file to search in"`) DO (
 SET var=%%B
)

ECHO %var%

Поймите, что разделители будут меняться в зависимости от того, что «разделяет» части вывода (будь то пробел, специальный символ и т. Д.)

Шаг 2 и 3:

FOR /F "USEBACKQ tokens=*" %%A IN (`DIR "Path" /A ^| FIND /I "%var%"`) DO (
 COPY /Y "%%A" "C:\New\Path\%%~nxA"
)
...