|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] вложенный цикл for с условием if |
|
|
CMD/BAT - [решено] вложенный цикл for с условием if
|
Новый участник Сообщения: 32 |
Добрый день, вопрос вот в чем.
Делаю батник, который заходит по очереди на каждый комп и скачивает с каждого компа файлы. При этом переподключает подключение (против множественного подключения) написал так set number=1 set ip=10.11.0.2 net use \\%ip% /delete net use \\%ip% password /user:user for %%i in (файл1 файл2 файл3) DO copy \\%ip%\folder\%%i g:\folder\%number% set number=2 set ip=10.11.0.3 net use \\%ip% /delete net use \\%ip% password /user:user for %%i in (файл1 файл2 файл3) DO copy \\%ip%\folder\%%i g:\folder\%number% Можно ли это сделать покомпактней? Сделать вложенный цикл пытался, но переменная с ip мешает, так как тоже меняется. И если можно то попроще, это мой первый батник. |
|
Отправлено: 13:31, 24-09-2013 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 13:49, 24-09-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 32
|
Профиль | Отправить PM | Цитировать Спасибо, Iska, я думал так сделать, но это неудобно, потому что копирование файлов происходит в папку с названием ip а не с именем компа, с которого скачаны файлы. Я понимаю, что это уже мелочи, но тогда придется делать дубляж файлов и из папок с названием ip копировать файлы в соответствующие папки с названием компов. Может как то иначе можно?
А подключения нужны, чтоб автоматом вводились логин и пароль для доступа к скачиванию файлов. Если один раз ввести их он запомнит, но до перезагрузки компа. Потом надо вводить заново. Да и ошибки множественного подключения бывают. А если первый цикл пустить по таким именам 192.168.223.1_comp1 192.168.223.2_comp2... затем перед net use разложить %%i на две переменные до и после "_" и использовать их? Может такое сработать? Если да, то как это реализовать? |
Отправлено: 14:01, 24-09-2013 | #3 |
Новый участник Сообщения: 32
|
Профиль | Отправить PM | Цитировать http://forum.oszone.net/thread-240191.html вот нашел, буду пробовать.
|
Отправлено: 14:21, 24-09-2013 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать ivanxam, если Вам известны имена — зачем ip?
|
|
Отправлено: 14:41, 24-09-2013 | #5 |
Новый участник Сообщения: 32
|
Профиль | Отправить PM | Цитировать Это моя вина, дело в том, что имя компа, которое я имел ввиду это не hostname. hostname компьютеров я не знаю, знаю только ip. Скорее всего можно как-то узнать hostname по ip, но мне это было раньше незачем. Но все равно, даже если использовать hostname, он не совпадет с именами компов, которые мы используем. Вот в чем проблема.
|
Отправлено: 15:32, 24-09-2013 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Объясните тогда отличие «имени компа» от «hostname». Объясните также, где Вы берёте имена машин и каким образом они связаны с ip (или у Вас вовсе статика)?
|
Отправлено: 15:51, 24-09-2013 | #7 |
Пользователь Сообщения: 124
|
Профиль | Отправить PM | Цитировать #Powershell script. #Don't forget unlock script executing by #using command "Set-ExecutionPolicy RemoteSigned" or "Set-ExecutionPolicy Unrestricted" #Save this file with ".ps1" extension $dest="g:\folder\" function CopyFromDisk($ip,$cred) { New-PSDrive -Name P -Root "\\$ip\folder" -PSProvider FileSystem -Credential $cred Get-ChildItem p:\* -Recurse -Force | Copy-Item -Destination "$dest\$ip" -Recurse -Force Remove-PSDrive -Name P } $cred=Get-Credential for ($i=2;$i -lt 255;$i++) { CopyFromDisk -ip "10.11.0.$i" -cred $cred } |
------- Отправлено: 16:40, 24-09-2013 | #8 |
Новый участник Сообщения: 32
|
Профиль | Отправить PM | Цитировать sunnykey, я вообще ничего не понял)) так как только начал осваивать cmd/bat. Можешь объяснить, что тут вообще происходит?
Iska, объясняю, по всему городу стоят компьютеры, с которых мне нужно каждый день снимать электронные журналы. Компьютеров много, в разных подсетях, вплоть подключенные по GPRS, но их не касаемся. Я в мониторинге вижу "Имя компьютера" и IP каждого компьютера (hostname не знаю их). "Имя компьютера" это принятые нашим отделом названия машин. @Echo Off for %%A in ("10.11.55.5#100001" "10.11.0.20#100003") do ( For /F "tokens=1,2 delims=#" %%B In ("%%A") Do Set Name=%%B&Set Gramm=%%C Echo Name=%Name% Echo Gramm=%Gramm% ) |
Отправлено: 17:16, 24-09-2013 | #9 |
Ветеран Сообщения: 1758
|
|
Отправлено: 17:33, 24-09-2013 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Вложенный цикл в цикле | etherlord | Скриптовые языки администрирования Windows | 4 | 27-04-2023 06:03 | |
FreeBSD - Ошибка с условием WHILE (SSH) | mulekula | Общий по FreeBSD | 0 | 30-04-2012 14:28 | |
CMD/BAT - Составить скрипт с условием | Firebolt | Скриптовые языки администрирования Windows | 27 | 14-07-2011 23:59 | |
Smart. Вложенный массив | Artem-Samsung | Вебмастеру | 1 | 11-11-2010 02:52 | |
Вложенный SELECT в MySQL | LEXX2002 | Вебмастеру | 7 | 06-09-2005 00:07 |
|