![]() |
Работа с циклом
Всем доброго времени суток!
Господа, в продолжении темы http://forum.oszone.net/thread-349049.html. Навоял вот такую штуку, но она не спешит работать, подскажите пожалуйста, где косяк? Все наверняка очень плохо, и проблемы с синтаксисом. Идея заключается в том чтобы забирать из текстового файла IP адреса, и подставлять их в цикл, для автоматического удаленного заведения пользователей сразу на нескольких удаленных ПК. Код:
echo off |
Nilf, чем больше вы будете усложнять код и себе работу тем больше у вас будет проблем и непонимания
зачем вот это Цитата:
|
Ядрёны поммидоры, а зачем goto? И зачем перебирать файл с ip для выяснения количества оных, если все равно используются все?
Особо доставило вот это вот: Код:
for /f "skip=%NumStr% - 1" %%A IN ("IP.txt") do (set "ipinfile=%%~A"&&goto:M3) Это я, извините, на эмоциях написал, но оно - правда. Теперь собственно к делу, из скрипта удаляем к лешему начиная с rem количество переменных (ip) считывается из файла до pause, оставляем только это: Код:
for /f %%A IN ("IP.txt") do ( Протестить негде, но вроде как если всё остальное в порядке - должно работать. еще один момент, вот это Код:
set "ipinfile=%%~A" alpap, согласен. Судя по тому что ТС пытается сделать - у него одноранговая сеть с одинаковой учеткой с правами администратора на хостах, но я откровенно устал писать что запуск подобной, эмммм... автоматизации в одноранговой сети штука довольно спорная и геморная, если так уж хочется выстрелить себе в ногу - кто я такой чтобы мешать? В конце концов сами мы тоже когда-то по граблям ходили, однако помочь с мягкими насадками на рукоять - в наших силах. Ну и насчет насадок на грабли: есть такая хорошая и полезная штука как ansible - с ней возня в одноранговой сети (если уж нет возможности AD) становится чуть менее болезненной. |
непонятно видимо?
Если собираетесь считывать информацию из файла, то только там и должна быть вся информация, причем в таком примерно виде Код:
192.168.31.2,Vasya,12345 |
Ок. Понял.
Пример файла IP.txt: 192.168.31.1 192.168.31.2 192.168.31.3 192.168.31.4 .... Т.е. происходит банальное перечисление IP адресов на которые нужно отправить команду о добавлении нового пользователя. одна строка - один IP. Идея была такова что считается количество строк из файла, это значение подставляется в цикл, и по итог когда это значение придет к нулю (т.е. закончиться перебор всех строк) исполнение файла заканчивается. Цитата:
|
Цитата:
Цитата:
|
Цитата:
Цитата:
Код:
192.168.31.1,Vasya,1234 иначе надо составлять файл примерно так: Код:
Vasya,1234,192.168.31.1,net user UserNew1 Код:
@echo off |
Цитата:
|
Цитата:
Видимо если в такой последовательности, то получается что скрипт не стучится по заданному адресу, а пытается выполниться на локальном компе. |
у меня нет под рукой cmd чтобы проверить наверняка. больше всего похоже на какие-то грабли с переменной/переменными.
для проверки значения можно вывести все используемые переменные, например так: Код:
echo ipinfile = %ipinfile% но скорей всего дело в set, вроде бы в нем кавычки не нужны, т.е. Код:
set ipinfile=%%~A |
Цитата:
Код:
@Echo Off |
megaloman, нельзя брать имя %username%, это имя переопределит система в cmd и не будет выхода на удаленные компьютеры, останемся на локальном юзере.
|
alpap, Не вспомнил %username%, наверное возможны неприятности, жара в 36 градусов сказывается. Потестировал, но не так всё просто, не очень-то переопределяется. При перезапуске окна CMD всё возвращается на круги своя. На всякий случай исправил.
|
Поэтому iCount, sUserName, sPassword, aNames и т.п.
|
Iska, Вы конечно правы, стиль, батюшка, это всё!
Цитата:
|
Iska, alpap, Вообще-то что касается аккуратности и осмотрительности, то, ИМХО, было бы полезным применять SetLocal. Это может избавить от последствий недомыслия при образовании имен переменных.
Код:
@Echo Off |
megaloman, конечно. У меня прям шаблон под это дело задан в Far Manager'е при создании пакетного файла:
Скрытый текст
![]() |
Iska, Шаблон - это конечно полезно. Теперь я понимаю (постоянно недоумевал), почему у Ваших CMD всегда упорно присутствуют
SetLocal EnableExtensions EnableDelayedExpansion Тут бы я не согласился: SetLocal - полезно А вот EnableDelayedExpansion я стараюсь всеми силами избегать: как-то споткнулся, что в именах файлов присутствовали "!" С фаром, конечно, удобно: Вы запускаете bat-файл, открывается CMD-окно, Вы бесчинствуете, переопределяете переменные окружения, затем, после завершения сценария CMD-окно закрывается и все эти бесчинства отменяются. При работе в CMD-окне, запущенного, допкустим, в пуске, если не перезапускать его, получим переопределённые для этого сеанса CMD переменные окружения. |
Цитата:
|
Nilf, Солнце встало, сдохли мухи: продолжаем в том же духе :jester:
Всё то же самое, сделан аналог Choice на Set
Код:
@Echo Off |
Цитата:
2. Отчасти из-за этого я пользую либо WSH, либо PoSH, посему пока не сталкивался с подобной проблемой даже на сторонних файлах. Цитата:
Цитата:
|
Iska,
Цитата:
|
Время: 20:44. |
Время: 20:44.
© OSzone.net 2001-