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

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

Ответить
Настройки темы
CMD/BAT - [решено] Путаница в ключах

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


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

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


Добрый день!
Имеется задача. Помогите с решением.
Дано: Список №1 = Выбранные компьютеры
Код: Выделить весь код
pc-nb-01
pc-nb-02
pc-nb-03
Список №2 = Уникальные номера
Код: Выделить весь код
1050
1100
1150
Задача: Создать на выбранных компьютерах каталоги с уникальными номерами.

Накатал батник:
Код: Выделить весь код
@echo off
set ComputerList=listfile.txt
set ID=PiontID.txt
for /f "tokens=1" %%a in (%PointID%) do (
   for /f %%i in (%ComputerList%) do start cmd /c "psexec.exe \\%%i cmd /c mkdir \\%%i\c$\Temp\%%a"
)
Результатом у меня получается, что на каждом компьютере создаются 3 директории
c:\Temp\1050
c:\Temp\1100
c:\Temp\1150
А должно быть по одной директории на каждом компьютере,т.е. на компьютере pc-nb-01 должен появиться каталог c:\Temp\1050, на pc-nb-02 - c:\Temp\1100 и на pc-nb-03 - c:\Temp\1150.

Как говориться "запутался в трёх соснах"
Помогите разобраться, какие ключи после for /f необходимо поставить, чтобы добиться желаемого результата.

Отправлено: 14:14, 11-03-2016

 

Ветеран


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

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


Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion
set "ComputerList=listfile.txt"
set "ID=PointID.txt"
set n=0
for /f delims^=^ eol^= %%a in ('type "%ComputerList%"') do (
 set /a n+=1
 set m=0
 for /f delims^=^ eol^= %%b in ('type "%ID%"') do (
  set /a m+=1
  if !n!==!m! echo %%a %%b (Напишите свою команду)
))
pause>nul

Отправлено: 18:45, 11-03-2016 | #2



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

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


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


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

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


Спасибо за ответ!
Сейчас попробовал Ваш вариант, написав свою команду (start cmd /c "psexec.exe \\%%a cmd /c mkdir \\%%a\c$\Temp\%%b") :
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion
set "ComputerList=listfile.txt"
set "ID=PointID.txt"
set n=0
for /f delims^=^ eol^= %%a in ('type "%ComputerList%"') do (
 set /a n+=1
 set m=0
 for /f delims^=^ eol^= %%b in ('type "%ID%"') do (
  set /a m+=1
  if !n!==!m! echo %%a %%b start cmd /c "psexec.exe \\%%a cmd /c mkdir \\%%a\c$\Temp\%%b"
))
pause>nul
Результатом получаю
Код: Выделить весь код
pc-nb-01 1050 start cmd /c "psexec.exe \\pc-nb-01 cmd /c mkdir \\pc-nb-01\c$\Temp\1050"
pc-nb-02 1100 start cmd /c "psexec.exe \\pc-nb-02 cmd /c mkdir \\pc-nb-02\c$\Temp\1100"
pc-nb-03 1150 start cmd /c "psexec.exe \\pc-nb-03 cmd /c mkdir \\pc-nb-03\c$\Temp\1150"
Пишет нажмите кнопку для продолжения, все закрывается, папки не создаются.

Попробовал свою команду выполнить с новой строки:
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion
set "ComputerList=listfile.txt"
set "ID=PointID.txt"
set n=0
for /f delims^=^ eol^= %%a in ('type "%ComputerList%"') do (
 set /a n+=1
 set m=0
 for /f delims^=^ eol^= %%b in ('type "%ID%"') do (
  set /a m+=1
  if !n!==!m! echo %%a %%b 
start cmd /c "psexec.exe \\%%a cmd /c mkdir \\%%a\c$\Temp\%%b"
))
pause>nul
Результатом получается, что на каждом компьютере создаются 3 директории, т.е. вернулся к тому, с чего начал...
c:\Temp\1050
c:\Temp\1100
c:\Temp\1150

Отправлено: 11:45, 12-03-2016 | #3


Ветеран


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

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


Код: Выделить весь код
@echo off

set "ComputerList=listfile.txt"
set "ID=PointID.txt"

set n=-1
for /f "usebackq delims=" %%i in ("%ID%") do (
    set /a n+=1
    cmd /v /c for /f %%j in ('more +!n! "%ComputerList%"'^) do^
    @start cmd /c "psexec.exe \\%%j cmd /c mkdir "\\%%j\c$\Temp\%%i""^&^
    exit /b
)

exit /b
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:04, 12-03-2016 | #4


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


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

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


Большое спасибо за быстрые ответы.
Вариант, предложенный Georgio, отработал так как надо:
На компьютере pc-nb-01 появился каталог c:\Temp\1050
На компьютере pc-nb-02 появился каталог c:\Temp\1100
На компьютере pc-nb-03 появился каталог c:\Temp\1150
Больше никаких лишних папок в каталоге c:\Temp\ ни на одном компьютере не появилось.
Ещё раз спасибо!

Отправлено: 15:06, 12-03-2016 | #5


Ветеран


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

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


Roman_Ko, для чего тут нужен «start cmd /c "…»?! Дабы не ждать?
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:08, 12-03-2016 | #6


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


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

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


Цитата Iska:
Roman_Ko, для чего тут нужен «start cmd /c "…»?! Дабы не ждать? »
Допустим, вместо mkdir будет например copy размером от 1 Gb....
Ответ на Ваш вопрос - да, дабы не ждать. Спасибо.

Отправлено: 22:49, 12-03-2016 | #7


Ветеран


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

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


Roman_Ko, вот токмо у Вас там не «mkdir», а «psexec.exe».

Отправлено: 23:24, 12-03-2016 | #8


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


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

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


psexec.exe для удаленного выполнения mkdir...Я наверное несовсем понял о чем Вы хотели спросить. Можно без psexec?

Отправлено: 10:38, 13-03-2016 | #9


Ветеран


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

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


Цитата Roman_Ko:
Можно без psexec? »
Нет. Я просто думаю, зачем «start cmd /c» перед «psexec.exe». В последнем ведь есть:
Цитата:
-d Don't wait for process to terminate (non-interactive).
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:18, 13-03-2016 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
8 / 2012 - Путаница с буквами дисков при автоматической установки с флешки JonyBest Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 0 17-03-2014 10:47
Путаница с буквами дисков при автоматической установки с флешки.. vasya00 Автоматическая установка Windows 2000/XP/2003 9 31-07-2012 20:37
Установка - путаница с разделами диска Vowan Microsoft Windows 2000/XP 7 01-10-2010 16:50
Службы - [решено] Архивация и восстановление. Путаница с системными разделами. Borg1987 Microsoft Windows 7 2 31-12-2009 00:04
FreeBSD - Путаница с доступами к папкам Tosha_l Общий по FreeBSD 1 18-05-2008 09:53




 
Переход