Получить путь к файлу без его имени

338
Fernando YP

Файл song.mp3 находится в

C:\x-folders\y-folder\z-folder\song.mp3 

Как я могу сохранить этот путь в переменной?

C:\x-folders\y-folder\z-folder\ 

Спасибо

1
Изучите вывод `FOR /?`, Особенно для `% ~ dpI`. Akina 6 лет назад 1

1 ответ на вопрос

1
Pimp Juice IT

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

Пример первый

for %a in ("C:\x-folders\y-folder\z-folder\song.mp3") do set var=%~dpa 

Тогда %var%будет задана переменная, так что просто обратитесь %var%к применимому значению.


Пример второй

Если вам нужно перебрать какую-то папку со многими .mp3файлами, вы можете использовать этот синтаксис

for /f "tokens=*" %a in ('dir /b "C:\SomeFolder\*.mp3"') do set var=%~fa\ 

Тогда %var%будет задана переменная, так что просто обратитесь %var%к применимому значению. Вы можете ссылаться !var!на это, если вам нужно включить EnableDelayedExpansion в зависимости от того, что именно вам нужно сделать с помощью цикла, если вы планируете ссылаться на многие файлы и путь к их расположению в папке. Наконец, вы также можете использовать dir /s /bрекурсивный просмотр каталога.


Дополнительные ресурсы

  • Dir
  • За

    Переменные замены (FOR /?)

    Кроме того, была улучшена замена ссылок на переменные FOR. Теперь вы можете использовать следующий необязательный синтаксис:

    %~fI - expands %I to a fully qualified path name %~dI - expands %I to a drive letter only %~pI - expands %I to a path only 
  • EnableDelayedExpansion

    Задержка расширения приведет к тому, что переменные в пакетном файле будут расширяться во время выполнения, а не во время анализа, эта опция включается командой SETLOCAL EnableDelayedExpansion.


    Когда действует отложенное расширение, переменные могут быть немедленно прочитаны с помощью! Variable_name! вы также можете читать и использовать% variable_name%, которое покажет начальное значение (развернуто в начале строки).

Очень информативный ответ. Tim_Stewart 6 лет назад 0