Показать полную графическую версию : [решено] Наличие диска
Devils0411
02-07-2009, 11:07
Необходи батник, который проверял наличие файла test.exe на съемных дисках (имеется ввиду CD, DVD-диски). Если батник находит этот файл на диске, то выполняется run test.exe, если не находит, то выдавал бы сообщение с просьбой вставить диск, на котором есть этот файл.
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)
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
Проблема решилась частично. Окошечко "Диск отсутствует" выскакивает. Можно ли его убрать?
Окошечко "Диск отсутствует" выскакивает. »
А что такое диск 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 »
Как не странно, но это привод :)
Как не странно, но это привод »
Тогда вставьте в него диск. Это реакция системы на дисковод в котором нет диска. Других способов обхода пустых дисководов я не знаю. :(
Можно с помощью diskpart определить cd-rom (http://busla.ru/articles/WAIKfromDVD.html) (по файловой системе), а потом уже на этом диске файлы искать. Минус - требует административных привилегий.
ссылка может не работать сегодня с 21:00 до 23:00 - обещали работы в ДЦ
вариант через 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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.