Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Получить номер диска в переменную

Ответить
Настройки темы
CMD/BAT - [решено] Получить номер диска в переменную

Ветеран


Сообщения: 900
Благодарности: 86

Профиль | Отправить PM | Цитировать


Здравствуйте.
Нужно, чем проще, тем лучше, реализовать такое: при запуске файла надо вывести в переменную номер диска, в корне которого лежит файл 1
Типа как сделать diskpart -> list volume

Должно быть как-то так:
Код: Выделить весь код
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 IF EXIST %%d:\1 SET CDROM=%%d:
Для диска, у которого CDROM=%%d:, нужно в переменную вывести номер диска
Спасибо.

Отправлено: 19:14, 02-04-2014

 
exo exo вне форума

Аватара для exo

Ветеран


Сообщения: 12417
Благодарности: 1442

Профиль | Отправить PM | Цитировать


Цитата SharkyEXE:
Нужно, чем проще, тем лучше, реализовать такое: »
обязательно cmd? poweshell проще:
Код: Выделить весь код
PS C:\Users\Alex> Get-WmiObject Win32_logicaldisk


DeviceID     : C:
DriveType    : 3
ProviderName :
FreeSpace    : 49174024192
Size         : 141008302080
VolumeName   :

DeviceID     : D:
DriveType    : 3
ProviderName :
FreeSpace    : 2002513920
Size         : 2146430976
VolumeName   : Volume

DeviceID     : E:
DriveType    : 5
ProviderName :
FreeSpace    : 0
Size         : 0
VolumeName   : Audio CD

-------
Вежливый клиент всегда прав!

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:54, 02-04-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


Код: Выделить весь код
@echo off
setlocal

for /f "tokens=2 delims==" %%i in ('wmic cdrom get id /value') do call:set %%i
set cdrom_
goto:eof

:set
set /a cnt+=1
set cdrom_%cnt%=%1
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:23, 02-04-2014 | #3


Ветеран


Сообщения: 900
Благодарности: 86

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
@echo off
setlocal
for /f "tokens=2 delims==" %%i in ('wmic cdrom get id /value') do call:set %%i
set cdrom_
goto:eof
:set
set /a cnt+=1
set cdrom_%cnt%=%1 »
Здравствуйте. У меня Ваш код не работает. Создал файл 1.cmd, вставил туда целиком Ваш код, запустил файл 1.cmd и тишина
Кстати, а где в Вашем коде строка, для поиска в корне диска файла 1 и узнать букву этого диска?

Отправлено: 06:27, 03-04-2014 | #4


Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


Цитата SharkyEXE:
не работает. »
Какая версия ОС?
SharkyEXE, Нужно именно с файлом в корне CD/DVD?
Код: Выделить весь код
@echo off
setlocal

for /f "tokens=2 delims==" %%i in ('wmic cdrom get id') do if exist "%%i\1" set "cdrom=%%i"
echo %cdrom%
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:38, 03-04-2014 | #5


Ветеран


Сообщения: 900
Благодарности: 86

Профиль | Отправить PM | Цитировать


Цитата:
Какая версия ОС?
microsoft windows xp home sp3
Цитата:
Нужно именно с файлом в корне CD/DVD?
В принципе, путь любой, как Вам удобно
Только если у меня вставлено 3 100%но одинаковые флешки:
1) с одинаковыми именами (например, Вася)
2) с одинаковыми размерами (например, 32 гигабайта каждая)
то только по нужному файлу-метке 1 найдется нужная мне флешка и для нее надо определить номер
Даже фиксированная буква флешки не пойдет - на разных пк буква может меняться
Вот поэтому мне и надо найти файл-маркер 1 и где находится этот файл-маркер 1 для этого диска узнать номер

1) На диске C:\ я создал файл 1.cmd с кодом
Код: Выделить весь код
setlocal

for /f "tokens=2 delims==" %%i in ('wmic cdrom get id') do if exist "%%i\1" set "cdrom=%%i"
echo %cdrom%

pause
2) Запустил файл C:\1.cmd
3) Вот такое окно получил: http://yadi.sk/d/zKgpg8XlLk6w7

Спасибо

Последний раз редактировалось SharkyEXE, 03-04-2014 в 20:00.


Отправлено: 19:37, 03-04-2014 | #6


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата SharkyEXE:
Только если у меня вставлено 3 100%но одинаковые флешки »
Гмм… SharkyEXE, флэшка у Вас определяется именно как CD-ROM?
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:03, 03-04-2014 | #7


Ветеран


Сообщения: 900
Благодарности: 86

Профиль | Отправить PM | Цитировать


Цитата Iska:
Гмм… SharkyEXE, флэшка у Вас определяется именно как CD-ROM? »
Извините меня, пожалуйста, а кто Вам такое сказал?
Если Вы по поводу кода:
Код: Выделить весь код
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 IF EXIST %%d:\1 SET CDROM=%%d:
в котором указано название переменной CDROM, то вместо названия переменной CDROM может быть любое название, хоть Вася, хоть Петя...
Флешка у меня новая, купил в магазине, принес домой, раздербанил новую коробочку, в которую была упакована флешка, вставил флешку в комп и все.
Метка флешки - TRANSCEND
В плане никакими сторонними утилитами я не разбивал флешку, никаких виртуальных сиди-ромов я не делал на флешке
Спасибо.

Последний раз редактировалось SharkyEXE, 03-04-2014 в 20:21.


Отправлено: 20:11, 03-04-2014 | #8


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата SharkyEXE:
Извините меня, пожалуйста, а кто Вам такое сказал?
Если Вы по поводу кода: »
Именно. И последующего кода (за исключением #2). Было бы странно, если бы он у Вас заработал, будучи ориентирован на CD-ROM.

Лучше ориентироваться на серийный номер, наподобие:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq skip=1 delims=" %%i in (
	`wmic.exe LogicalDisk where "VolumeSerialNumber='533E46DF'" get Name 2^>nul`
) do for %%j in (%%i) do set sName=%%j

if defined sName echo [%sName%]

endlocal
exit /b 0
Здесь не номер, а буква логического диска. Дайте пояснения по поводу номера.
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:56, 03-04-2014 | #9


Ветеран


Сообщения: 900
Благодарности: 86

Профиль | Отправить PM | Цитировать


Например, файл маркер 1 находится в корне флешки, флешка имеет букву Е
Делаю Пуск -> Выполнить -> CMD
Появляется окно консоли, пишу diskpart, нажимаю Enter
Пишу list volume, нажимаю Enter
Появляется таблица, нахожу строку, где написано буква диска Е
И смотрю, какой Том 1 или Том 2 или Том 3 или другая цифра соответствует диску который имеет букву Е, в корне которого лежит файл-маркер 1
Вот цифра Том мне и нужна
Спасибо

Отправлено: 21:36, 03-04-2014 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Получить номер диска в переменную

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Как получить название группы Администраторов в переменную. volk1234 Скриптовые языки администрирования Windows 24 02-04-2015 15:48
CMD/BAT - [решено] Получить номер строки Bruce Wayne Скриптовые языки администрирования Windows 1 05-08-2013 20:56
CMD/BAT - [решено] Как получить порядковый номер диска в качестве переменной AUTO-NEK Скриптовые языки администрирования Windows 6 14-01-2011 18:57
CMD/BAT - Как получить номер com порта к которому подлюче GPS fritzz Скриптовые языки администрирования Windows 1 29-12-2010 00:50
(solved)Как получить переменную, содержащую путь к директории Documents and Settings? arial Автоматическая установка Windows 2000/XP/2003 12 15-11-2005 15:58




 
Переход