Войти

Показать полную графическую версию : Копирование и запуск batника на флеш при её подключении


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

ferget
25-09-2011, 16:57
как сделать так, чтобы скопировать батник на флешку (например с диска C:\) ведь заранее не известно какая буква присвоится флешке »
посмотрите здесь (http://forum.oszone.net/showthread.php?t=120708&highlight=%F4%EB%E5%F8%EA%E0)

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

del имя_bat-файла

spbdancer
25-09-2011, 17:28
Спасибо.
А как запустить скопированный файл уже на флешке?

ferget
25-09-2011, 17:42
в первый bat

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

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

ferget
25-09-2011, 18:10
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

Так?

Iska
25-09-2011, 18:50
start /D %Path% …»
Кстати, да. Я сам часто забываю о такой возможности.

spbdancer
25-09-2011, 20:03
Да, как сделать так, чтобы автоматически на всех флешкаш срабатывало, без ручного ввода?

ferget
25-09-2011, 20:14
на одну флешку, вот так


@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?

ferget
25-09-2011, 20:59
это нужно в цикле перебрать 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