2015-02-20 2 views
0

Я работаю над проектом, и мне нужно создать несколько пакетных файлов из текстового файла. Это значит, что я хочу запустить скрипт, который будет зацикливаться на test.txt, который содержит несколько IP-адресов. Я хочу создать пакетный файл для каждого IP-адреса в этом списке. Конечным результатом будет то, что я буду использовать START для обработки новых созданных пакетных файлов, чтобы у меня было несколько экземпляров, которые запускаются в одно и то же время.Создание нескольких командных файлов из текстового файла

Спасибо.

+0

У вас есть код для нас? что ты уже испробовал? – Rimble

+0

Привет, Том, к сожалению нет. Я новичок в этом. Я искал этот сайт для всех возможных решений и не мог найти то, что можно было бы использовать в моем случае. – DecrepitSoldier

+0

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

ответ

1

Я предполагаю, что вы хотите, чтобы каждый скрипт выполнял то же самое, только с другим IP-адресом каждый раз. Создание отдельного пакетного сценария для каждого IP-адреса совершенно не нужно - вам просто нужен один сценарий, который принимает IP-адрес в качестве параметра. Предполагая, что IP-адрес является первым параметром, тогда он будет ссылаться на %1. Вот тривиальная демонстрация - очевидно, вы бы изменили processIP.bat, чтобы делать то, что хотите, с IP-адресом.

main.bat

@echo off 
for /f %%A in (test.txt) do start "" processIP %%A 

processIP.bat

@echo off 
echo Processing %1 to demonstrate how to access the IP parameter 
pause 

Вы могли бы даже объединить все в одном сценарии. %~f0 расширяет полный путь к текущему запущенному пакетному сценарию, поэтому скрипт знает, как называть себя, независимо от того, где он находится, или какое имя у него есть. Вы просто передаете дополнительный параметр с определенным значением, чтобы указать, какой код выполнить.

anyname.bat

@echo off 
if %1==:processIP (
    shift /1 
    goto :processIP 
) 

for /f %%A in (test.txt) do start "" "%~f0" :processIP %%A 
exit /b 

:processIP 
echo Processing %1 to demonstrate how to access the IP parameter 
pause 

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

+0

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

Смежные вопросы