Devils0411 |
02-07-2009 11:07 1157066 |
Наличие диска
Необходи батник, который проверял наличие файла test.exe на съемных дисках (имеется ввиду CD, DVD-диски). Если батник находит этот файл на диске, то выполняется run test.exe, если не находит, то выдавал бы сообщение с просьбой вставить диск, на котором есть этот файл.
|
Devils0411, посмотрите здесь, подобная задача.
|
Devils0411 |
02-07-2009 16:31 1157404 |
Код:
: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
Где ошибка? Необходимо чтоб выдавала ошибку о том, что не вставлен диск. А вместо этого выдает вот такую ошибку и окно закрывается 
|
Цитата:
Цитата Devils0411
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 1157431 |
Проблема решилась частично. Окошечко "Диск отсутствует" выскакивает. Можно ли его убрать?
|
Цитата:
Цитата Devils0411
Окошечко "Диск отсутствует" выскакивает. »
|
А что такое диск 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 1157535 |
Как не странно, но это привод :)
|
Цитата:
Цитата Devils0411
Как не странно, но это привод »
|
Тогда вставьте в него диск. Это реакция системы на дисковод в котором нет диска. Других способов обхода пустых дисководов я не знаю. :(
|
Можно с помощью diskpart определить cd-rom (по файловой системе), а потом уже на этом диске файлы искать. Минус - требует административных привилегий.
ссылка может не работать сегодня с 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 1158016 |
Busla, amel27, ваши варианты хороши, но это только утяжеляет скрипт. Самый оптимальный вариант от gora
|
Время: 00:43.
© OSzone.net 2001-