пакетный файл: удалить имя файла в пути в строке - PullRequest
0 голосов
/ 07 января 2019

Я создал небольшой командный файл для Windows, и у меня возникла небольшая проблема:

Я определил переменную, которая содержит строку, путь к исходному файлу:

D: \ git_repos \ ALM_Sandboxs \ Sensor_Config \ StateManagement \ ssm_state.cpp

Я хочу извлечь путь без имени файла:

D: \ git_repos \ ALM_Sandboxs \ Sensor_Config \ StateManagement \

Поскольку путь может измениться, как и имя файла, у меня возникли трудности с этим. Есть много способов, но я не смог использовать ни один из них:

Первым будет подсчитывать символы имени файла:

set NumberOfCharacter

и до

set FilePath=%FilePathTemp2:~,%NumberOfCharacter%%

Но это не работает. Я могу использовать только номер с этим синтаксисом: set FilePath=%FilePathTemp2:~,-18% ==> Это работает, но я бы хотел прочитать 18 из переменной

Я прочитал, что пакетный интерпретатор не может разрешить пары%, поэтому я попытался

for /l %%x in (1,1,%strlength%) do set %FilePathTemp2%=%FilePathTemp2:~,-1%

Это тоже не работает, потому что цикл for, похоже, не способен изменить FilePathTemp2 с глобальной областью действия.

Буду благодарен за любую помощь

1 Ответ

0 голосов
/ 07 января 2019
for %%a in (D:\git_repos\ALM_Sandboxs\Sensor_Config\StateManagement\ssm_state.cpp) do echo %%~dpa

(это синтаксис командного файла. Чтобы использовать его непосредственно в командной строке, замените оба %% на один %)

Использование модификаторов (например, %%~dpa) и возможных модификаторов объясняется в for /?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...