Показать полную графическую версию : Копирование и запуск batника на флеш при её подключении
spbdancer
25-09-2011, 16:23
Здравствуйте! Есть задача - необходимо скопировать batник на флешку и запустить его с неё в момент её подключения, а затем удалить батник на флешке.
Алгоритм - Вставляем флешку -> автоматически запускается batник с диска C:\ -> копирует batник на флешку и запускает его(далее в работу вступает батник с флешки) -> выполняет необходимые действия и удаляется.
Вопрос запуска батника при подключении флешки решил. Не знаю как сделать так, чтобы скопировать батник на флешку (например с диска C:\) ведь заранее не известно какая буква присвоится флешке. И как сделать самоудаление batника после выполнения задачи? Заранее спасибо за помощь!
как сделать так, чтобы скопировать батник на флешку (например с диска C:\) ведь заранее не известно какая буква присвоится флешке »
посмотрите здесь (http://forum.oszone.net/showthread.php?t=120708&highlight=%F4%EB%E5%F8%EA%E0)
а для самоудаления
del имя_bat-файла
spbdancer
25-09-2011, 17:28
Спасибо.
А как запустить скопированный файл уже на флешке?
в первый bat
start "" cmd /c "путь_к_файлу\второй.bat"
spbdancer
25-09-2011, 17:47
Я попробовал, второй батник запускается с диска исходника, а не с флешки! Если я правильно понимаю, автоматически определенное имя флешки должно подставиться в строку start? Как это написать?
Set Path=
start /D %Path% "" cmd /c 2.bat
spbdancer
25-09-2011, 18:21
Я в этом деле новичок, хочу уточнить правильно ли понял сначала
Set Path = 'wmic logicaldisk where drivetype^=2 get name' (Узнаем букву подключенной флешки)
и потом
start /D %Path% "" cmd /c 2.bat
Так?
start /D %Path% …»
Кстати, да. Я сам часто забываю о такой возможности.
spbdancer
25-09-2011, 20:03
Да, как сделать так, чтобы автоматически на всех флешкаш срабатывало, без ручного ввода?
на одну флешку, вот так
@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
Спасибо! Буду экспериментировать!
spbdancer
25-09-2011, 20:37
Работает! =)
А чтобы на 3 флешки автоматом сделать, это нужно в цикле перебрать Answer от 1 до 3?
это нужно в цикле перебрать Answer от 1 до 3? »
как-то так
FOR /L %%i IN (1,1,3) DO(
Set Answer=%%i
..................
)
spbdancer
25-09-2011, 21:05
@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
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.