Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Наличие диска (http://forum.oszone.net/showthread.php?t=143996)

Devils0411 02-07-2009 11:07 1157066

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

gora 02-07-2009 11:22 1157085

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

Где ошибка? Необходимо чтоб выдавала ошибку о том, что не вставлен диск. А вместо этого выдает вот такую ошибку и окно закрывается

gora 02-07-2009 16:44 1157411

Цитата:

Цитата 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

Проблема решилась частично. Окошечко "Диск отсутствует" выскакивает. Можно ли его убрать?

gora 02-07-2009 19:24 1157531

Цитата:

Цитата 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

Цитата:

Цитата gora
диск E »

Как не странно, но это привод :)

gora 02-07-2009 20:22 1157571

Цитата:

Цитата Devils0411
Как не странно, но это привод »

Тогда вставьте в него диск. Это реакция системы на дисковод в котором нет диска. Других способов обхода пустых дисководов я не знаю. :(

Busla 02-07-2009 21:29 1157627

Можно с помощью diskpart определить cd-rom (по файловой системе), а потом уже на этом диске файлы искать. Минус - требует административных привилегий.
ссылка может не работать сегодня с 21:00 до 23:00 - обещали работы в ДЦ

amel27 03-07-2009 07:07 1157840

вариант через 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.

Время: 00:43.
© OSzone.net 2001-