-1

Я посмотрел и нашел следующую строку кода, которая отлично работает, но при запуске в командном файле ничего не происходит.

for /f "skip=4 usebackq tokens=2" %a in (`nslookup microsoft.com 8.8.8.8`) do echo %a > C:\ip.txt

Может кто-нибудь, пожалуйста, дайте мне знать, очевидно, совершенно новый для сценариев, но пытается.

2 ответа2

1

Вам понадобится двойной% внутри .bat файлов. Кстати, вы, вероятно, хотите >> (добавление каждого результата в файл) вместо > (перезаписывание файла последним результатом)

0

при запуске в командном файле ничего не происходит.

Вы должны получить сообщение об ошибке, подобное следующему:

C:\test>cat foo.cmd
for /f "skip=4 usebackq tokens=2" %a in (`nslookup microsoft.com 8.8.8.8`) do echo %a > ip.txt
C:\test>foo
a was unexpected at this time.

C:\test>for /f "skip=4 usebackq tokens=2" a > ip.txt

Эта ошибка вызвана тем, что вам нужно использовать %% вместо % внутри командного файла.

Reference FOR - Условно выполнить команду несколько раз.:

Синтаксис-FOR-Files

FOR %%parameter IN (set) DO command

...

Параметры FOR

Первый параметр должен быть определен с использованием одного символа, например буквы G

FOR %%G IN ...

Если вы используете команду FOR в командной строке, а не в пакетной программе, используйте только один знак процента: %G вместо %%G

Так что в вашем случае, если вы хотите использовать команду for внутри пакетного (cmd) файла, тогда каждый % должен быть заменен на %% следующим образом:

for /f "skip=4 usebackq tokens=2" %%a in (`nslookup microsoft.com 8.8.8.8`) do echo %%a > C:\ip.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .