Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Копирование и запуск batника на флеш при её подключении (http://forum.oszone.net/showthread.php?t=216420)

spbdancer 25-09-2011 16:23 1759809

Копирование и запуск batника на флеш при её подключении
 
Здравствуйте! Есть задача - необходимо скопировать batник на флешку и запустить его с неё в момент её подключения, а затем удалить батник на флешке.
Алгоритм - Вставляем флешку -> автоматически запускается batник с диска C:\ -> копирует batник на флешку и запускает его(далее в работу вступает батник с флешки) -> выполняет необходимые действия и удаляется.
Вопрос запуска батника при подключении флешки решил. Не знаю как сделать так, чтобы скопировать батник на флешку (например с диска C:\) ведь заранее не известно какая буква присвоится флешке. И как сделать самоудаление batника после выполнения задачи? Заранее спасибо за помощь!

ferget 25-09-2011 16:57 1759832

Цитата:

Цитата spbdancer
как сделать так, чтобы скопировать батник на флешку (например с диска C:\) ведь заранее не известно какая буква присвоится флешке »

посмотрите здесь

а для самоудаления

Код:

del имя_bat-файла

spbdancer 25-09-2011 17:28 1759858

Спасибо.
А как запустить скопированный файл уже на флешке?

ferget 25-09-2011 17:42 1759872

в первый bat

Код:

start  "" cmd /c "путь_к_файлу\второй.bat"

spbdancer 25-09-2011 17:47 1759876

Я попробовал, второй батник запускается с диска исходника, а не с флешки! Если я правильно понимаю, автоматически определенное имя флешки должно подставиться в строку start? Как это написать?

ferget 25-09-2011 18:10 1759889

Код:

Set Path=

start /D %Path% "" cmd /c 2.bat


spbdancer 25-09-2011 18:21 1759893

Я в этом деле новичок, хочу уточнить правильно ли понял сначала

Set Path = 'wmic logicaldisk where drivetype^=2 get name' (Узнаем букву подключенной флешки)

и потом

start /D %Path% "" cmd /c 2.bat

Так?

Iska 25-09-2011 18:50 1759909

Цитата:

Цитата ferget
Код:

start /D %Path% …
»

Кстати, да. Я сам часто забываю о такой возможности.

spbdancer 25-09-2011 20:03 1759954

Да, как сделать так, чтобы автоматически на всех флешкаш срабатывало, без ручного ввода?

ferget 25-09-2011 20:14 1759962

на одну флешку, вот так

Код:

@Echo Off
Set Source=2.bat

SetLocal EnableDelayedExpansion
For /F "Tokens=2 Delims==" %%A In ('WMIC LogicalDisk Where ^(DriveType^=2 And MediaType^=NULL^) Get Name /Value') Do (
        Set /A Cnt+=1
        Set Usb!Cnt!=%%A
        Echo.!Cnt!. Copy to drive %%A
)

Set Answer=1 //тут надо менять номер
Set Usb%Answer% &&Copy /Y "%Source%" !Usb%Answer%!
start /D !Usb%Answer%! "" cmd /c 2.bat
EndLocal


spbdancer 25-09-2011 20:22 1759972

Спасибо! Буду экспериментировать!

spbdancer 25-09-2011 20:37 1759984

Работает! =)
А чтобы на 3 флешки автоматом сделать, это нужно в цикле перебрать Answer от 1 до 3?

ferget 25-09-2011 20:59 1759997

Цитата:

Цитата spbdancer
это нужно в цикле перебрать Answer от 1 до 3? »

как-то так

Код:

FOR /L %%i IN (1,1,3) DO(
Set  Answer=%%i
..................
)


spbdancer 25-09-2011 21:05 1760001

Код:

@Echo Off 
Set Source=D:\temp\3.bat   
SetLocal EnableDelayedExpansion 
For /F "Tokens=2 Delims==" %%A In ('WMIC LogicalDisk Where ^(DriveType^=2 And MediaType^=NULL^) Get Name /Value') Do (         
Set /A Cnt+=1         
Set Usb!Cnt!=%%A         
Echo.!Cnt!. Copy to drive %%A  )
Echo.
 FOR /L %%i IN (1,2,3) DO(
Set Answer=%%i         
Set Usb%Answer% &&Copy /Y "%Source%" !Usb%Answer%!         
start /D !Usb%Answer%! "" cmd /c 3.bat %%i  )
  EndLocal

Вот так ругается на непредвиденное появление DO


Время: 11:10.

Время: 11:10.
© OSzone.net 2001-