Копирование и запуск batника на флеш при её подключении
Здравствуйте! Есть задача - необходимо скопировать batник на флешку и запустить его с неё в момент её подключения, а затем удалить батник на флешке.
Алгоритм - Вставляем флешку -> автоматически запускается batник с диска C:\ -> копирует batник на флешку и запускает его(далее в работу вступает батник с флешки) -> выполняет необходимые действия и удаляется.
Вопрос запуска батника при подключении флешки решил. Не знаю как сделать так, чтобы скопировать батник на флешку (например с диска C:\) ведь заранее не известно какая буква присвоится флешке. И как сделать самоудаление batника после выполнения задачи? Заранее спасибо за помощь!
|
Цитата:
Цитата spbdancer
как сделать так, чтобы скопировать батник на флешку (например с диска C:\) ведь заранее не известно какая буква присвоится флешке »
|
посмотрите здесь
а для самоудаления
|
Спасибо.
А как запустить скопированный файл уже на флешке?
|
в первый bat
Код:
start "" cmd /c "путь_к_файлу\второй.bat"
|
Я попробовал, второй батник запускается с диска исходника, а не с флешки! Если я правильно понимаю, автоматически определенное имя флешки должно подставиться в строку start? Как это написать?
|
Код:
Set Path=
start /D %Path% "" cmd /c 2.bat
|
Я в этом деле новичок, хочу уточнить правильно ли понял сначала
Set Path = 'wmic logicaldisk where drivetype^=2 get name' (Узнаем букву подключенной флешки)
и потом
start /D %Path% "" cmd /c 2.bat
Так?
|
Кстати, да. Я сам часто забываю о такой возможности.
|
Да, как сделать так, чтобы автоматически на всех флешкаш срабатывало, без ручного ввода?
|
на одну флешку, вот так
Код:
@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
|
Спасибо! Буду экспериментировать!
|
Работает! =)
А чтобы на 3 флешки автоматом сделать, это нужно в цикле перебрать Answer от 1 до 3?
|
Цитата:
Цитата spbdancer
это нужно в цикле перебрать Answer от 1 до 3? »
|
как-то так
Код:
FOR /L %%i IN (1,1,3) DO(
Set Answer=%%i
..................
)
|
Код:
@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.
© OSzone.net 2001-