![]() |
Получить номер диска в переменную
Здравствуйте.
Нужно, чем проще, тем лучше, реализовать такое: при запуске файла надо вывести в переменную номер диска, в корне которого лежит файл 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: |
Цитата:
Код:
PS C:\Users\Alex> Get-WmiObject Win32_logicaldisk |
Код:
@echo off |
Цитата:
Кстати, а где в Вашем коде строка, для поиска в корне диска файла 1 и узнать букву этого диска? |
Цитата:
SharkyEXE, Нужно именно с файлом в корне CD/DVD? Код:
@echo off |
Цитата:
Цитата:
Только если у меня вставлено 3 100%но одинаковые флешки: 1) с одинаковыми именами (например, Вася) 2) с одинаковыми размерами (например, 32 гигабайта каждая) то только по нужному файлу-метке 1 найдется нужная мне флешка и для нее надо определить номер Даже фиксированная буква флешки не пойдет - на разных пк буква может меняться Вот поэтому мне и надо найти файл-маркер 1 и где находится этот файл-маркер 1 для этого диска узнать номер 1) На диске C:\ я создал файл 1.cmd с кодом Код:
setlocal 3) Вот такое окно получил: http://yadi.sk/d/zKgpg8XlLk6w7 Спасибо |
Цитата:
|
Цитата:
Если Вы по поводу кода: Код:
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: Флешка у меня новая, купил в магазине, принес домой, раздербанил новую коробочку, в которую была упакована флешка, вставил флешку в комп и все. Метка флешки - TRANSCEND В плане никакими сторонними утилитами я не разбивал флешку, никаких виртуальных сиди-ромов я не делал на флешке Спасибо. |
Цитата:
Лучше ориентироваться на серийный номер, наподобие: Код:
@echo off |
Например, файл маркер 1 находится в корне флешки, флешка имеет букву Е
Делаю Пуск -> Выполнить -> CMD Появляется окно консоли, пишу diskpart, нажимаю Enter Пишу list volume, нажимаю Enter Появляется таблица, нахожу строку, где написано буква диска Е И смотрю, какой Том 1 или Том 2 или Том 3 или другая цифра соответствует диску который имеет букву Е, в корне которого лежит файл-маркер 1 Вот цифра Том мне и нужна Спасибо |
Цитата SharkyEXE:
Цитата:
Цитата:
Код:
@echo off |
Цитата:
Только вот, извините меня, пожалуйста, я про это не знал, я думал, что 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) Ваш код Цитата:
Это все правильно. Однако, пожалуйста, если у Вас есть время, возможность, желание - сделайте так, чтобы номер флешки (Файл-маркер 1 лежит в корне флешки с буквой E и меткой TRANSCEND) искался не для diskpart -> list volume, а для Управление дисками То есть чтобы Ваш код выдавал не 2, а 1. Спасибо. Еще раз извините меня, пожалуйста, век живи, век учись, теперь я буду знать, что diskpart -> list volume и Управление дисками выдают разные цифры тома для одной и той же флешки |
SharkyEXE, может, Вы ещё скажете, для чего Вам нужен «номер диска»?
|
Цитата:
С пункта 1 до пункта 2 прочитайте, пожалуйста. Спасибо. |
SharkyEXE, спасибо, ясно.
Читать, правда, надо вообще-то п.2: Поскольку у Вас нет «wmic.exe», то WSH (с учётом соответствия «логический диск» → «раздел» → «физический диск»): Код:
Option Explicit Код:
cscript.exe //nologo <Путь\имя.vbs> |
Iska
Извините меня, пожалуйста, за, возможно, мою наглость, а нельзя ли попроще код, например как здесь http://forum.oszone.net/post-2332804-11.html но только, чтобы было для Управление дисками, чтобы цифра 1 в переменной была, а не 2? Спасибо. |
Код:
@echo off |
Iska
Извините меня, пожалуйста, а возможно сделать отвязку от серийного номера и сделать привязку к поиску файла-маркера 1 в корне диска? Просто лень заморачиваться с серийным номером, привычнее как-то файл-маркер... |
Можно. Но не нужно. Ибо «заморачиваться» с серийным номером не придётся. Достаточно однократно выполнить команду «dir» для Вашей флэшки и использовать полученную информацию:
Код:
Серийный номер тома: 533E-46DF |
Цитата:
Спасибо. |
Напрасно.
Код:
Option Explicit |
Почему напрасно?
Ведь мне надо чем проще тем лучше, так сказать файл-маркер это для меня классика, а серийный номер это уже очень научно Хотя может быть с серийным номером чем то лучше, чем с файлом-маркером |
SharkyEXE, во всяком случае, поменяйте имя маркерного файла с «1» (которых внезапно может оказаться x штук на логических дисках, а не только на Вашей флэшке) на какой-нибудь более уникальный маркер. Например, на какой-нибудь сгенерированный GUID. И мы закономерно придём к
|
Iska, как вариант -- метку тома делать уникальной, чтобы маркер под руками не болтался.
SharkyEXE, Правда, полностью стандартный GUID туда вроде не влезает -- но можно сгенерить и вставить первые 32 символа. И обрабатывать затем эту метку тома. Или читать тот идентификатор, с которым диск сидит в системе. |
mwz, я и предлагаю пользовать почти то же — серийный номер логического диска, получаемый им при форматировании раздела.
|
Iska, ну я просто показать, что вариантов не один: выбор есть. :)
|
2 all
Огромное всем спасибо за помощь. Тепреь мне не придется каждый раз залазить в Управление дисками и смотреть номер флешки, затем этот номер прописывать в командный файл... В общем, уважение и почёт автоматизации и всем тем людям, кто помогает в автоматизации действий. Ура! |
Время: 00:46. |
Время: 00:46.
© OSzone.net 2001-