我需要环境变量中相对路径中文件的基本名称 + 扩展名。例如:如果我输入参数,则..\..\Appdata\bin\test.jpg
生成的环境变量应包含test.jpg
。如果我输入类似这样的 bat 脚本的参数sub1\sub2\input.png
,则它应包含input.png
。这可以通过 for 语句、使用delims=\
并选择 LAST 字段来完成。我不知道如何选择最后一个字段。
答案1
在文中 从变量中批量提取路径和文件名 找到这个脚本用于从环境变量中提取所有文件部分:
@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
)