Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] вложенный цикл for с условием if

Ответить
Настройки темы
CMD/BAT - [решено] вложенный цикл for с условием if

Новый участник


Сообщения: 32
Благодарности: 1

Профиль | Отправить PM | Цитировать


Добрый день, вопрос вот в чем.
Делаю батник, который заходит по очереди на каждый комп и скачивает с каждого компа файлы.
При этом переподключает подключение (против множественного подключения)
написал так

Код: Выделить весь код
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
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Зачем подключения? Без домена живёте?
Код: Выделить весь код
for %%i in (192.168.223.1 192.168.223.2 192.168.223.5 192.168.223.10) do (
    net use \\%%i password /user:user
    for  %%j in (файл1 файл2 файл3) do copy /y "\\%%i\folder\%%j" "g:\folder\%%i\"
    net use \\%%i /delete
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:49, 24-09-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 32
Благодарности: 1

Профиль | Отправить PM | Цитировать


Спасибо, Iska, я думал так сделать, но это неудобно, потому что копирование файлов происходит в папку с названием ip а не с именем компа, с которого скачаны файлы. Я понимаю, что это уже мелочи, но тогда придется делать дубляж файлов и из папок с названием ip копировать файлы в соответствующие папки с названием компов. Может как то иначе можно?

А подключения нужны, чтоб автоматом вводились логин и пароль для доступа к скачиванию файлов. Если один раз ввести их он запомнит, но до перезагрузки компа. Потом надо вводить заново. Да и ошибки множественного подключения бывают.

А если первый цикл пустить по таким именам 192.168.223.1_comp1 192.168.223.2_comp2... затем перед net use разложить %%i на две переменные до и после "_" и использовать их? Может такое сработать? Если да, то как это реализовать?

Отправлено: 14:01, 24-09-2013 | #3


Новый участник


Сообщения: 32
Благодарности: 1

Профиль | Отправить PM | Цитировать


http://forum.oszone.net/thread-240191.html вот нашел, буду пробовать.

Отправлено: 14:21, 24-09-2013 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


ivanxam, если Вам известны имена — зачем ip?

Отправлено: 14:41, 24-09-2013 | #5


Новый участник


Сообщения: 32
Благодарности: 1

Профиль | Отправить PM | Цитировать


Это моя вина, дело в том, что имя компа, которое я имел ввиду это не hostname. hostname компьютеров я не знаю, знаю только ip. Скорее всего можно как-то узнать hostname по ip, но мне это было раньше незачем. Но все равно, даже если использовать hostname, он не совпадет с именами компов, которые мы используем. Вот в чем проблема.

Отправлено: 15:32, 24-09-2013 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Объясните тогда отличие «имени компа» от «hostname». Объясните также, где Вы берёте имена машин и каким образом они связаны с ip (или у Вас вовсе статика)?

Отправлено: 15:51, 24-09-2013 | #7


Аватара для sunnykey

Пользователь


Сообщения: 124
Благодарности: 47

Профиль | Отправить 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
}

-------
cmd умри, powershell живи=)
Powershel 4.0 microsoft.com/ru-ru/download/details.aspx?id=40855


Отправлено: 16:40, 24-09-2013 | #8


Новый участник


Сообщения: 32
Благодарности: 1

Профиль | Отправить 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%
)
Подскажите почему не разделяет %%А на 2 переменные? Делаю как тут http://forum.oszone.net/thread-240191.html

Отправлено: 17:16, 24-09-2013 | #9


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


ivanxam,
Цитата:
Подскажите почему не разделяет %%А на 2 переменные?
Код: Выделить весь код
@Echo Off
setlocal enabledelayedexpansion

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:33, 24-09-2013 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] вложенный цикл for с условием if

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход