В пакетном режиме: только чтение имени файла из переменной с путем и именем файла
-
19-08-2019 - |
Вопрос
В настоящее время я ищу способ взять переменную в пакетном режиме и проанализировать только имя файла.
Например, я передаю свой пакетный файл параметр -s из другого приложения, который впоследствии устанавливается в моей исходной переменной. Переменная исходного файла обычно содержит что-то вроде: C: \ Program Files \ myapp \ Instance.1 \ Data \ filetomove.ext.
Я предполагаю читать с конца переменной до первого " \ " и установить результат для новой переменной имени файла, но я не смог использовать " for / f " Командовать успешно. Р>
Любая помощь будет высоко ценится!
Обновление: доступна только стандартная XP или Windows 2000/2003 ... (не может предполагать, что наборы ресурсов установлены).
Решение
Если он входит в качестве аргумента сценария, то есть% 1,% 2 и т. д., вы можете извлечь только имя файла и расширение в переменную, например, так:
set FILENAME=%~nxN
где N - индекс аргумента. Например, этот скрипт будет отображать только имя первого аргумента:
@echo off
set FILENAME=%~nx1
echo %FILENAME%
Другие советы
Немного улучшенная версия:
set FILENAME="%~nx1"
Дополнительная скобка гарантирует, что специальные символы, такие как & amp; ', не будут мешать во время выполнения пакета.