Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Запись переменной диска с которого работаешь. Как? (http://forum.oszone.net/showthread.php?t=189013)

Pozia 21-10-2010 22:49 1524386

Запись переменной диска с которого работаешь. Как?
 
Как в батнике прописать переменную диска, с которого запускается батник. Например батник лежит глубоко в папках и нужно запустить кое чего из другой папки но без явного указания буквы диска. нужно это потому что загружаюсь с одного из двух веников и буквы соответственно постоянно разные.

Iska 21-10-2010 23:16 1524406

Код:

call /?
Соответственно, «%~d0» даст имя диска, на котором был сохранён пакетный файл:
Код:

@echo %~d0

NiOl 22-10-2010 10:34 1524617

1. Iska дал прямой ответ на вопрос, но получен в результате будет диск, на котором расположен батник. Текущий же диск лежит в переменной текужего пути %CD% - текущий каталог, %CD:~0,2% - первые 2 символа - имя диска

2. более грамотно использовать относительные пути - либо от текущего каталога (".\" - текущий каталог, "..\" - предыдущий, "..\..\" - на два вверх и т.д.) либо от корня текущего диска: "\"

Iska 22-10-2010 12:12 1524704

NiOl, в данном случае текущий диск как раз вполне может оказаться отличным от «…диска, с которого запускается батник». Я изначально тоже сразу подумал про относительные пути. Но вот с «%CD%»… Что будет, если:
* пакетный файл сохранён в «e:\01»;
* «запустить кое чего», например, «bla-bla-bla.exe» — в «e:\02»;
* пакетный файл запускается при текущем пути «c:\Temp»?!

«%CD%» тут никак не поможет; только «%~…0». А вот насчёт относительных путей после «%~…0» — это вполне логично. Скажем, в условном вышеприведённом примере запустить «bla-bla-bla.exe» относительно месторасположения пакетного файла:
Код:

@echo off
"%~dp0\..\02\bla-bla-bla.exe"



Время: 09:07.

Время: 09:07.
© OSzone.net 2001-