Показать полную графическую версию : Проверка наличия диска в дисководе по папке
MedVetoff
23-08-2009, 12:51
У меня такой вопрос: мне нужно написать батник, чтобы он проверял наличие диска в дисководе, а точнее наличие папки на этом диске.
Если быть точнее, то нужно сделать так, чтобы выполнялось условие, если есть эта папка на диске, то перейти к выполнению следующего блока программы.
Второй вопрос, который у меня появился-как отключить сочетание клавиш на клавиатуре через реестр с помощью батника.Чтобы определенные буквы не работали.
первое
if exist D:\aaa\*.* goto 1
goto end
:1
echo "есть файлы"
:end
второе
не реально (AFAIK)
megaloman
25-08-2009, 20:16
По первому вопросу предлагаю то же самое, что и verena, но с более читаемой логикой
Set What=D:\Primer
If Not Exist %What% GoTo End
Pause 'Делаем, что задумано'
:End
MedVetoff
26-08-2009, 13:52
но проблема в том что на каждом компе один и тот же жесткий диск может быть под разной буквой.
Проще говоря дома мой диск d, приду к другу, а у него этот диск будет под другой буквой.
мне нужен батник, который находил бы мой CD или DVD диск на компе по метке(например прога.exe)
как мне это сделать
megaloman, может поможешь?
megaloman
26-08-2009, 16:19
Идея решения (в bat - файле) - перебрать все буквы дисков (от A до Z) и тестировать для каждой наличие файла (папки). Не очень красиво, но в рамках bat-файла иного не вижу.
Альтернатива - VBS (там можно выбрать только имеющиеся диски, при желании - СД или ДВД).
Освобожусь - напишу.
megaloman
26-08-2009, 21:06
Вот батник, перебирает все диски, если на каком-то находит заданную папку (или файл, смотря что напишите в переменной What) делает что-то (у меня делает паузу, Вы вправе вставить любой блок команд)
Похоже, буквы можно перебрать проще, но что-то на ум не пришло.
Echo On
Set What=:\Телефоны Беларуси 2007
Set Log=False
For /L %%j in (1,1,26) Do Call :Litera %%j
GoTo End
:Litera %1
If %Log%==True GoTo End
FOR /F "tokens=%1", %%i IN ('Echo a b 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 Set Disk=%%i
If Not Exist "%Disk%%What%" GoTo End
Set Log=True
Pause %Disk%%What% 'Делаем, что задумано'
:End
Предлагаю искать нужный диск не по папке, а по метке тома, а еще лучше по "серийнику тома", которые можно увидить командой Vol:
@Echo off
rem Здесь указывается метка нужного диска, а лучше серийный номер тома:
set Label=B8BD-1B77
for %%D 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 (
vol %%D:|FIND /c "%Label%">nul
if not errorlevel 1 set Disk=%%D:
cls
)
rem Если диск не найден, то сообщение об ошибке и выход
if "%Disk%"=="" (
MSG * ERROR: Disk not attached!!!
exit
)
rem Действия, если нужный диск найден:
echo %Disk%
megaloman
26-08-2009, 22:50
Подсмотрел у NiOl перебор букв, сократил свой код.
Echo Off
Set What=:\Примеры макроса
Set Log=False
For %%D 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 Call :Execution %%D
GoTo End
:Execution
If %Log%==True GoTo End
If Not Exist "%1%What%" GoTo End
Set Log=True
Set Disk=%1
Echo %Disk%%What% 'Делаем, что задумано'
Pause ''
:End
MedVetoff
27-08-2009, 16:55
проверю, отпишусь
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.