Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » [решено] CDROM=%~d0 - Объясните непонятливому, как оно работает, плз. (+)

Ответить
Настройки темы
[решено] CDROM=%~d0 - Объясните непонятливому, как оно работает, плз. (+)

Новый участник


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

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


Читал Виндоуз Хэлп. Много думал.
Который раз уже смотрю, что там или очень мало инфы по нужному вопросу или инфа есть, но для юзера - все в общих словах без конкретных примеров и объяснений, зато с красивыми выражениями.
В данном случае я пока лишь только понял, что CDROM=%~d0 нужно принять на веру, и что оно работает.
Но может кто-нибудь все-таки объяснит КАК оно работает? Пример из справки непонятен: CDROM=%~dI, где I - переменная (какая??). Что в данном случае означает нолик? А если я не с компакт-диска хочу это установить а, скажем, с ЮСБ-устройства?

Заранее спасибо.

Отправлено: 15:26, 03-03-2005

 

Ветеран


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

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


Mchik
значит тебе прийдется вырости из юзера в проффесионала, чтобы понимать что скрывается за красивостями, и где брать инфу о нужных командах

Теперь о главном.
mk:@MSITStore:E:\WINNT\Help\ntcmds.chm::/percent.htm
Цитата:
% (Замещаемый параметр)
Замещаемые параметры %0 и от %1 до %9 могут быть помещены в любом месте пакетного файла. При запуске пакетного файла %0 замещается именем пакетного файла, а переменные аргументов с %1 по %9 замещаются соответствующими параметрами, введенными в командной строке.

Например, чтобы скопировать содержимое одной папки в другую, в пакетный файл должна быть добавлена следующая инструкция:

xcopy %1\*.* %2

Для запуска файла введите следующее:

mybatch.bat C:\afolder D:\bfolder.

Результат будет таким же, как и при записи в пакетный файл строки xcopy C:\afolder \*.* D:\bfolder.

Параметр % разворачивает аргументы пакетной программы (%0, %1, ..., %9) как описано ниже:

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

Переменная Описание
%~1 расширение %1, которое удаляет окружающие кавычки (")
%~f1 замена %1 полным путем
%~d1 замена %1 именем диска
%~p1 замена %1 путем
%~n1 замена %1 именем файла
%~x1 замена %1 расширением имени файла
%~s1 замена путем, содержащим только короткие имена.
%~a1 замена %1 атрибутами файла
%~t1 замена %1 временем модификации файла
%~z1 замена %1 размером файла
%~$PATH:1 поиск в каталогах, перечисленных в переменной среды PATH, и замена %1 полным именем первого найденного файла. Если переменная среды не определена или поиск не обнаружил файлов, модификатор выдает пустую строку.

Модификаторы могут быть объединены для получения более сложных результатов:

Переменная Описание
%~dp1 замена %1 именем диска и путем
%~nx1 замена %1 именем файла и расширением
%~dp$PATH:1 поиск в каталогах, перечисленных в переменной среды PATH, и замена %1 именем диска и путем к первому найденному файлу.
%~ftza1 замена %1 строкой, аналогичной результату работы программы dir

В приведенных выше примерах %1 и PATH могут быть заменены другими допустимыми значениями. Конструкция %~ должна завершаться допустимым номером аргумента. Модификаторы %~ не могут быть использованы вместе с %*.
из другой части доступных мне знаний, если я правильно путаю, ) то %0 всегда ссылается на имя программы которую запустили, вместе с полным путем к нему.
отсюда, согласно выше преведенной таблице %~d0 заменяется именем диска из пути где был запущен командный файл.
Проверяем. Создаем командный файл и запускаем его
@Echo off
Echo Full Path= %~0
Echo Disk Letter= %~d0
pause

Вывод. Если хотим получить букву РЕАЛЬНОГО CD-ROM, эту команду нужно выполнять из файла расположеного на CD. Если мы запустим эту конструкцию с любого другого места, то будем удивлены результатами.

также посмотри на команду Set /?

-------
Я не развожу политику в подписи
ПТН ПНХ

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

Отправлено: 17:22, 03-03-2005 | #2



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

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


Новый участник


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

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


Спасибо. Очень доходчиво. Особенно с примером ;)

Отправлено: 21:09, 03-03-2005 | #3


(*.*)


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

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


Oтличное объяснение! Я, пожалуй, сошлюсь на него в статье помимо упоминания команды FOR. Ключевой момент, конечно,
Цитата:
%0 всегда ссылается на имя программы которую запустили, вместе с полным путем к нему. отсюда, согласно выше преведенной таблице %~d0 заменяется именем диска из пути где был запущен командный файл.
Поэтому такую команду имеет смысл запускать только из файла на CD. Если запустить с логического диска, то переменная %CDROM% будет соответствовать букве этого диска.

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 22:29, 03-03-2005 | #4


Ветеран


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

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


Vadikan
Если будешь ссылаться/цитировать, тогда сразу заменяй
"всегда ссылается на имя программы которую запустили"
на
"всегда ссылается на имя командного файла (.bat, .cmd) который в данный момент исполняется"
чтобы не было непоняток, и не доразумений.

-------
Я не развожу политику в подписи
ПТН ПНХ


Отправлено: 23:05, 03-03-2005 | #5


(*.*)


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

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


vserd
Я просто дам линк на тему. Можешь исправить пост.

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 01:09, 04-03-2005 | #6


Ветеран


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

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


Хотел рандомно задавать значение некоей переменной окружения, для этого использовал вот такие строки(брал размер первого попавшегося файла.

Цитата:
SET hivename=%~z$PATH:0
echo %hivename%
Как можно видеть, в переменную попадает далеко не совсем то, что я ожидал:

Цитата:
55 J:\NEW\autoittropsitory\задать_права_на_реестр.bat
55 - это как раз размер этого батника.
А должно быть, судя по этим строкам:

Цитата:
%~dp$PATH:1 поиск в каталогах, перечисленных в переменной среды PATH, и замена %1 именем диска и путем к первому найденному файлу.
только 55. Что я не понимаю?

-------
Tega AutoPatcher. Все обновления для XP в одном пакете. http://tega.ru/dirk/links.html

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

Отправлено: 19:57, 14-07-2006 | #7



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » [решено] CDROM=%~d0 - Объясните непонятливому, как оно работает, плз. (+)

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Меню пуск? как оно работает? можно ли заюзать? Plagiator Хочу все знать 2 26-10-2009 10:53
[решено] сокрытие окна, как только оно появилось или всплыло crashtuak AutoIt 7 30-07-2009 21:47
перемещается не окно а его контур,а потом только оно,как это исправить? Grandi Хочу все знать 2 10-04-2009 07:37
как тормознуть CDROM Andrewkras Железо в Linux 10 20-11-2003 20:28
CDROM в Linux работает со скоростью 24кб/сек Crew Железо в Linux 6 11-01-2003 22:51




 
Переход