Мне нужно базовое имя + расширение файла в относительном пути в переменной окружения. Например, если я введу аргумент ..\..\Appdata\bin\test.jpg Результирующая переменная среды должна содержать test.jpg . Если я наберу аргумент скрипта bat, например sub1\sub2\input.png , он должен содержать input.png . Это можно сделать с помощью оператора for, delims=\ и выбора поля LAST. Я не знаю, как выбрать последнее поле.

1 ответ1

1

В посте Batch Extract путь и имя файла из переменной находится этот скрипт для извлечения всех частей файла из переменной среды:

@ECHO OFF
SETLOCAL
set file=C:\Users\l72rugschiri\Desktop\fs.cfg
FOR %%i IN ("%file%") DO (
ECHO filedrive=%%~di
ECHO filepath=%%~pi
ECHO filename=%%~ni
ECHO fileextension=%%~xi
)

И полный список для извлечения информации из первого параметра скрипта .bat :

%~1 - expands %1 removing any surrounding quotes (")
%~f1 - expands %1 to a fully qualified path name
%~d1 - expands %1 to a drive letter only
%~p1 - expands %1 to a path only
%~n1 - expands %1 to a file name only
%~x1 - expands %1 to a file extension only
%~s1 - expanded path contains short names only
%~a1 - expands %1 to file attributes
%~t1 - expands %1 to date/time of file
%~z1 - expands %1 to size of file

Который может быть использован, например:

set file=%~f1
set filepath=%~dp1
set filename=%~nx1

Или как локальная переменная FOR:

for %%a in (..\Desktop\fs.cfg) do (
    set file=%%~fa
    set filepath=%%~dpa
    set filename=%%~nxa
)    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .