CMD/BAT - [решено] Наличие диска

Аватара пользователя
Devils0411

CMD/BAT - [решено] Наличие диска

Сообщение Devils0411 »

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

Re: CMD/BAT - [решено] Наличие диска

Сообщение gora »

Код:

Код: Выделить всё

: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

Re: CMD/BAT - [решено] Наличие диска

Сообщение gora »

Цитата Devils0411:



if exist %CDROM% goto 1

if not exist (

echo Inserted CD with Windows XP Sp3

)

CMD/BAT - [решено] Наличие диска




Попробуйте заменить на

Код:

Код: Выделить всё

If DEFINED CDROM (goto :1) Else (echo Inserted CD with Windows XP Sp3)
Аватара пользователя
gora

Re: CMD/BAT - [решено] Наличие диска

Сообщение gora »

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

Re: CMD/BAT - [решено] Наличие диска

Сообщение gora »

Цитата Devils0411:



Окошечко "Диск отсутствует" выскакивает.
CMD/BAT - [решено] Наличие диска




А что такое диск 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
Аватара пользователя
gora

Re: CMD/BAT - [решено] Наличие диска

Сообщение gora »

Цитата gora:



диск E
CMD/BAT - [решено] Наличие диска




Как не странно, но это привод Изображение
Аватара пользователя
gora

Re: CMD/BAT - [решено] Наличие диска

Сообщение gora »

Цитата Devils0411:



Как не странно, но это привод
CMD/BAT - [решено] Наличие диска




Тогда вставьте в него диск. Это реакция системы на дисковод в котором нет диска. Других способов обхода пустых дисководов я не знаю. Изображение
Аватара пользователя
Busla

Re: CMD/BAT - [решено] Наличие диска

Сообщение Busla »

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

ссылка может не работать сегодня с 21:00 до 23:00 - обещали работы в ДЦ
Аватара пользователя
Busla

Re: CMD/BAT - [решено] Наличие диска

Сообщение Busla »

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

Вернуться в «Скриптовые языки администрирования Windows»