Можно ли получить текущее имя папки (не текущий путь к каталогу) с помощью команды DOS? Если так, то как?
Самое близкое, что я получил, было это, но оно этого не делает:
for /f "delims=\" %%a in ("%CD%") do set CURR=%%a
echo.DIR: %CURR%
примечание: вышеупомянутая попытка была моей попыткой токенизировать строку и получить последний токен, установленный как переменная CURR.
windows
command-line
batch
djangofan
источник
источник
cd | sed "s/.*\\//"
(который направляет вывод cd (cwd) в поиск по регулярному выражению и заменяет его, заменяя все перед окончательным \ вообще ничем)for /f
TomWij%~n*
не поддерживаются. (Windows 'cmd.exe
это не DOS, это родная программа для Windows.)Ответы:
Кратчайший путь, который я нашел:
или в сценарии .bat:
или в .bat со значением Get в переменной.
Объяснение: http://www.robvanderwoude.com/ntfor.php
nx означает только имя файла и расширение
источник
%
с%%
..
), например, моя папка% USERPROFILE%.*
использовался до этого ooЕсли вы хотите узнать текущее местоположение командного файла (и если ваша Windows не очень старая версия), введите
for /?
в окне «DOS box». Прокрутить вниз. Читать.Вы узнаете, что теперь вы можете читать (из в пакетном файле) этих переменных:
Это работает для многих случаев. Предположим, пакетный файл называется
mytest.bat
. Вы можете назвать это по-разному:..\..\to\mytest.bat
............................... (относительный путь)d:\path\to\mytest.bat
........................... (полный путь)\\fileserver\sharename\mytest.bat
... (путь на удаленном ресурсе)... и вы всегда получите правильное значение в ваших переменных.
источник
%~dpnx0
, не так ли?Мне лично понравился ответ Томса, пока он не боролся с точками в именах режиссеров. Это дало мне подсказку:
источник
Ответ Тома хорош, но если у вас есть имя каталога с точкой (например, wxwidgets-2.9.4), вы получите только полное имя. Таким образом, вместо этого будет выведен wxwidgets-2.9, потому что .4 рассматривается как расширение (Да, даже если это имя каталога!).
Чтобы получить полное имя выхода, вы должны добавить расширение до конца:
и в режиме пакетного файла:
Или, конечно, вместо этого установите переменную в командном файле:
источник
Другой способ это:
это работает с "." и пробелы в пути
Что оно делает?
поместите все имя файла (driveletter-path-filename-extension) в
MyPath
Varудалить имя файла и расширение из
MyPath
varЭто также работает с путями UNC. Если вам нужен обратный слеш в конце пути. Удалите
\
послеMyPath
во второй команде set, например.источник
%~dp0
Вы можете получить текущий каталог в переменную. Один лайнер:
Проверить с
источник
Просто
или же
Будьте осторожны с обратной косой чертой конца пути, она не должна быть обратной косой черты конца.
источник
Мой ответ в этой теме состоит из 3 простых строк:
источник
Это работает для меня из командного файла. Возвращает имя текущего рабочего каталога.
источник