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

Компьютерный форум 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

 

Ветеран


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

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


Цитата SharkyEXE:
Цитата:
microsoft windows xp home sp3
Там нет wmic, увы

Цитата:
И смотрю, какой Том 1 или Том 2 или Том 3 или другая цифра соответствует диску который имеет букву Е, в корне которого лежит файл-маркер 1
Вот цифра Том мне и нужна
Код: Выделить весь код
@echo off
setlocal

for /f "tokens=2,3" %%i in (' "echo list volume | diskpart" ') do (

	if exist "%%j:\1" set "num=%%i"
	
)

echo %num%

Последний раз редактировалось Foreigner, 03-04-2014 в 23:02.

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

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



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

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


Ветеран


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

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


Цитата Foreigner:
@echo off
setlocal
for /f "tokens=2,3" %%i in (' "echo list volume | diskpart" ') do (
if exist "%%j:\1" set "num=%%i"
)
echo %num% »
Огромное Вам спасибо, код 100% рабочий.

Только вот, извините меня, пожалуйста, я про это не знал, я думал, что diskpart -> list volume и Управление дисками это одно и тоже
Файл-маркер 1 лежит в корне флешки с буквой E и меткой TRANSCEND
В diskpart -> list volume у меня такой скриншот: http://yadi.sk/d/CdMOWYcNLmAfS
В Управление дисками у меня такой скриншот: http://yadi.sk/d/nh3jr3CILmAfU
То есть в diskpart -> list volume для флешки (Файл-маркер 1 лежит в корне флешки с буквой E и меткой TRANSCEND) номер тома 2
А в Управление дисками для флешки (Файл-маркер 1 лежит в корне флешки с буквой E и меткой TRANSCEND) номер тома 1
Выделено красными прямоугольниками на скриншотах про разные цифры томов для одной и той же флешки (Файл-маркер 1 лежит в корне флешки с буквой E и меткой TRANSCEND)

Ваш код
Цитата Foreigner:
@echo off
setlocal
for /f "tokens=2,3" %%i in (' "echo list volume | diskpart" ') do (
if exist "%%j:\1" set "num=%%i"
)
echo %num% »
выдает цифру 2 для моей флешки (Файл-маркер 1 лежит в корне флешки с буквой E и меткой TRANSCEND): http://yadi.sk/d/9dAgMcKnLmAmz
Это все правильно.

Однако, пожалуйста, если у Вас есть время, возможность, желание - сделайте так, чтобы номер флешки (Файл-маркер 1 лежит в корне флешки с буквой E и меткой TRANSCEND) искался не для diskpart -> list volume, а для Управление дисками

То есть чтобы Ваш код выдавал не 2, а 1.

Спасибо.

Еще раз извините меня, пожалуйста, век живи, век учись, теперь я буду знать, что diskpart -> list volume и Управление дисками выдают разные цифры тома для одной и той же флешки

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


Ветеран


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

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


SharkyEXE, может, Вы ещё скажете, для чего Вам нужен «номер диска»?
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:35, 04-04-2014 | #13


Ветеран


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

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


Цитата Iska:
SharkyEXE, может, Вы ещё скажете, для чего Вам нужен «номер диска»? »
Вот для этого: http://www.nearthebridge.com/gruzims...-v-virtualbox/
С пункта 1 до пункта 2 прочитайте, пожалуйста.
Спасибо.

Отправлено: 06:44, 04-04-2014 | #14


Ветеран


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

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


SharkyEXE, спасибо, ясно.

Читать, правда, надо вообще-то п.2:


Поскольку у Вас нет «wmic.exe», то WSH (с учётом соответствия «логический диск» → «раздел» → «физический диск»):
Код: Выделить весь код
Option Explicit

Dim objSWbemObjectEx

With GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
	For Each objSWbemObjectEx In .ExecQuery("SELECT * FROM Win32_LogicalDisk WHERE VolumeSerialNumber = '533E46DF'")
		Exit For
	Next
	
	For Each objSWbemObjectEx In objSWbemObjectEx.Associators_(,"Win32_DiskPartition")
		Exit For
	Next
	
	For Each objSWbemObjectEx In objSWbemObjectEx.Associators_(,"Win32_DiskDrive")
		Exit For
	Next
	
	WScript.Echo objSWbemObjectEx.DeviceID
End With

WScript.Quit 0
Для использования внутри пакетного файла использовать в качестве хоста WSH «cscript.exe» в виде:
Код: Выделить весь код
cscript.exe //nologo <Путь\имя.vbs>
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:12, 04-04-2014 | #15


Ветеран


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

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


Iska
Извините меня, пожалуйста, за, возможно, мою наглость, а нельзя ли попроще код, например как здесь http://forum.oszone.net/post-2332804-11.html но только, чтобы было для Управление дисками, чтобы цифра 1 в переменной была, а не 2?
Спасибо.

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


Ветеран


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

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


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

for /f "usebackq" %%i in (
	`cscript.exe //nologo "%~dp0GetPhysycalDriveBySerialNumber.vbs"`
) do set sPhysycalDrive=%%i

if defined sPhysycalDrive echo [%sPhysycalDrive%]

endlocal
exit /b 0
Файл «GetPhysycalDriveBySerialNumber.vbs», содержащий код из предыдущего поста, предполагается расположенным в том же каталоге, что и пакетный файл («%~dp0»).
Это сообщение посчитали полезным следующие участники:

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


Ветеран


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

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


Iska
Извините меня, пожалуйста, а возможно сделать отвязку от серийного номера и сделать привязку к поиску файла-маркера 1 в корне диска?
Просто лень заморачиваться с серийным номером, привычнее как-то файл-маркер...

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


Ветеран


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

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


Можно. Но не нужно. Ибо «заморачиваться» с серийным номером не придётся. Достаточно однократно выполнить команду «dir» для Вашей флэшки и использовать полученную информацию:
Код: Выделить весь код
Серийный номер тома: 533E-46DF
без дефиса. Вплоть до её переформатирования.
Это сообщение посчитали полезным следующие участники:

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


Ветеран


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

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


Цитата Iska:
Можно. Но не нужно. Ибо «заморачиваться» с серийным номером не придётся. Достаточно однократно выполнить команду «dir» для Вашей флэшки и использовать полученную информацию: »
Все таки можно, пожалуйста, оочень хочется, чтобы без серийного номера, чтобы по файлу-маркеру 1 в корне флешки работало?
Спасибо.

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



Компьютерный форум 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




 
Переход