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