2014-10-20 2 views
0

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

Input Variable: SET "FULL = C: \ Test \ file.txt"

Wanted Выход:

FILE: file.txt

ПУТЬ: C: \ Test \

В настоящее время синтаксис for for & не имеет для меня большого смысла (на этом языке сценариев пакетного программирования), что затрудняет мне поиск рабочего решения в Интернете ...

ответ

1
set "FULL=C:\test\file.txt" 

for %%a in ("%FULL%") do (
    set "filePath=%%~dpa" 
    set "file=%%~nxa" 
) 

for цикл будет перебрать set из файлов (только один файл в наборе в данном случае), и для каждого из них код после пункта do выполняется.

Для каждой итерации цикла for и поэтому для каждого выполнения пункта do, сменный параметр (%%a в предыдущем коде) будет содержать ссылку на файл обрабатывается.

Этот сменный параметр имеет некоторые модификаторы (которые можно увидеть на рабочем столе for /?) для извлечения необходимой информации из файла. Модификаторы в виде

%% ~ modifier replaceableParameter 

В предыдущем примере кода, d модификатор представляет собой диск, на котором хранится файл, p путь (иерархия папок), где хранится файл, n это имя файла без расширение и x является расширением. Таким образом,

%%~dpa = drive and path of the file being referenced by a 
%%~nxa = name and extensions of the file being referenced by a 
+0

Очень подробно! Спасибо, теперь я понимаю это намного лучше. И он работает именно так, как мне нужно в сценарии, который я пишу. –

Смежные вопросы