В пакетном режиме: только чтение имени файла из переменной с путем и именем файла - PullRequest
8 голосов
/ 18 января 2009

В настоящее время я ищу способ взять переменную в пакетном режиме и только разобрать имя файла.

Например, я передаю свой пакетный файл параметр -s из другого приложения, который впоследствии устанавливается в моей исходной переменной. Переменная исходного файла обычно содержит что-то вроде: C: \ Program Files \ myapp \ Instance.1 \ Data \ filetomove.ext.

Я предполагаю прочитать с конца переменной до первого "\" и установить результат для имени новой переменной, но я не смог успешно использовать команду "for / f".

Любая помощь будет высоко ценится!

Обновление: доступна только стандартная XP или Windows 2000/2003 ... (не может предполагать, что наборы ресурсов установлены).

Ответы [ 2 ]

9 голосов
/ 18 января 2009

Если он входит в качестве аргумента сценария, то есть% 1,% 2 и т. Д., Вы можете извлечь только имя файла и расширение в переменную, например:

set FILENAME=%~nxN

где N - индекс аргумента. Например, этот скрипт будет отображать только имя первого аргумента:

@echo off
set FILENAME=%~nx1
echo %FILENAME%
2 голосов
/ 28 октября 2011

Немного улучшенная версия:

set FILENAME="%~nx1"

Дополнительная скобка гарантирует, что специальные символы, такие как &, не будут мешать во время выполнения пакета.

...