PDA

Показать полную графическую версию : [решено] Наличие диска


Devils0411
02-07-2009, 11:07
Необходи батник, который проверял наличие файла test.exe на съемных дисках (имеется ввиду CD, DVD-диски). Если батник находит этот файл на диске, то выполняется run test.exe, если не находит, то выдавал бы сообщение с просьбой вставить диск, на котором есть этот файл.

gora
02-07-2009, 11:22
Devils0411, посмотрите здесь (http://forum.oszone.net/thread-140110.html), подобная задача.

Devils0411
02-07-2009, 16:31
:2
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\test.exe set CDROM=%%i:
if exist %CDROM% goto 1
if not exist (
echo Inserted CD with Windows XP Sp3
)
pause > nul
goto 2
:1
start test.exe


Где ошибка? Необходимо чтоб выдавала ошибку о том, что не вставлен диск. А вместо этого выдает вот такую ошибку и окно закрывается http://s51.radikal.ru/i132/0907/eb/70dd6bf2332b.jpg (http://www.radikal.ru)

gora
02-07-2009, 16:44
if exist %CDROM% goto 1
if not exist (
echo Inserted CD with Windows XP Sp3
)
»
Попробуйте заменить наIf DEFINED CDROM (goto :1) Else (echo Inserted CD with Windows XP Sp3)

Devils0411
02-07-2009, 17:00
Проблема решилась частично. Окошечко "Диск отсутствует" выскакивает. Можно ли его убрать?

gora
02-07-2009, 19:24
Окошечко "Диск отсутствует" выскакивает. »
А что такое диск E в вашей системе, не картридер случайно? Если картридер, то попробуйте изменить порядок опроса на обратный:for %%i in (Z Y X W V U T S R Q P O N M L K J I H G F E D C) do if exist %%i:\test.exe set CDROM=%%i: и путь в строке запуска нужно указать полный, если Вы запускаете файл с CD:
start %CDROM%\test.exe

Devils0411
02-07-2009, 19:29
диск E »
Как не странно, но это привод :)

gora
02-07-2009, 20:22
Как не странно, но это привод »
Тогда вставьте в него диск. Это реакция системы на дисковод в котором нет диска. Других способов обхода пустых дисководов я не знаю. :(

Busla
02-07-2009, 21:29
Можно с помощью diskpart определить cd-rom (http://busla.ru/articles/WAIKfromDVD.html) (по файловой системе), а потом уже на этом диске файлы искать. Минус - требует административных привилегий.
ссылка может не работать сегодня с 21:00 до 23:00 - обещали работы в ДЦ

amel27
03-07-2009, 07:07
вариант через WMI:
@Echo Off

Call :WaitDisk setup.exe
Start %CDROM%\setup.exe

EXIT

:WaitDisk
For /F "Tokens=1,2 Delims==" %%i In ('WMIC LogicalDisk Where DriveType^=5 Get Name^,VolumeSerialNumber /Value^|Find "="') Do Call :TestDisk "%~1" %%i %%j
If Defined CDROM GoTo :EOF
Echo Insert CD with Windows XP Sp3
Pause >Nul
GoTo :WaitDisk

:TestDisk
Set $%2=%3
If %2==VolumeSerialNumber If Defined $%2 If Exist "%$Name%\%~1" Set CDROM=%$Name%
GoTo :EOF

Devils0411
03-07-2009, 12:06
Busla, amel27, ваши варианты хороши, но это только утяжеляет скрипт. Самый оптимальный вариант от gora




© OSzone.net 2001-2012