Действительно ли возможно получить имя текущей папки (не путь текущего каталога) при помощи команды DOS? Если так, как?
Самое близкое, которое я получил, было этим, но это не делает этого:
for /f "delims=\" %%a in ("%CD%") do set CURR=%%a
echo.DIR: %CURR%
примечание: вышеупомянутая попытка была я пытающийся маркировать строку и получить последний маркерный набор как ВОРКОВАТЬ переменную.
Самым коротким путем я нашел:
for %I in (.) do echo %~nxI
или в рамках .bat сценария:
for %%I in (.) do echo %%~nxI
или в .bat с Получают значение в переменной.
for %%I in (.) do set CurrDirName=%%~nxI
echo %CurrDirName%
Объяснение: http://www.robvanderwoude.com/ntfor.php
nx означает имя файла и расширение только
Если Вы хотите знать текущее местоположение пакетного файла (и если Ваш Windows не является очень древним выпуском), ввести for /?
в окне 'DOS box'. Прокрутить вниз. Читать.
Вы узнаете, что можно теперь считать (из пакетного файла) эти переменные:
%0 - as the name how this batchfile was called
%~d0 - as the drive letter where this batchfile is located ('\\' in case of share)
%~p0 - as path (without the drive letter) where this batchfile is located
%~n0 - as filename (without suffix) of this batchfile
%~x0 - as filename's suffix (without filename) of this batchfile
%~a0 - as this batchfile's file attributes
%~t0 - as this batchfile's date+time
%~z0 - as this batchfile's filesize
%~dpnx0 - as this batchfile's fully qualified path+filename
[... and then some more ...]
Это работает на многие случаи. Примите, batchfile называют mytest.bat
. Можно назвать его по-разному:
..\..\to\mytest.bat
............................... (относительный путь)d:\path\to\mytest.bat
........................... (полный путь)\\fileserver\sharename\mytest.bat
... (путь на удаленной доле)... и Вы будете всегда получать правильное значение в своих переменных.