我有一个接受文件路径的批处理文件。然后我需要单独隔离文件名和文件扩展名。例如,如果我的文件路径是“\ svr-01 \ My Docs \ My Spreadsheet.xls”,那么我需要两个单独的变量;一个包含'My SpreadSheet',另一个包含“.xls”。
到目前为止我所拥有的。我已经能够从路径中分离文件名和扩展名:
set FILEPATH=\\SVR-01\My Docs\My Spreadsheet.xls
for /F "delims=" %%A in ("%FILEPATH%") do set "FILENAME=%%~nxA"
echo.%FILENAME%
我如何将文件名和扩展名与此变量分开?
答案 0 :(得分:4)
set FILEPATH=\\SVR-01\My Docs\My Spreadsheet.xls
for /F "delims=" %%A in ("%FILEPATH%") do (
set "FILEFULLNAME=%%~nxA"
set "FILENAME=%%~nA"
set "FILEEXT=%%~xA"
)
set file
答案 1 :(得分:1)
您可以使用%~n
作为文件名,使用%~x
作为扩展名。
你刚刚将两者结合起来。分别对每个部分使用它们。
rem Filename
for /F "delims=" %%A in ("%FILEPATH%") do set "FILENAME=%%~nA"
rem Extension
for /F "delims=" %%A in ("%FILEPATH%") do set "FILENAME=%%~xA"
有关更多选项,请参阅here。
答案 2 :(得分:1)
我认为你应该看看
%~1 - 展开%1删除任何周围的引号(")
%~f1 - 将%1扩展为完全限定的路径名
%~d1 - 将%1扩展为仅驱动器号
%~p1 - 将%1扩展为仅路径
%~n1 - 将%1扩展为仅文件名
%~x1 - 将%1扩展为仅文件扩展名
%~s1 - 扩展路径仅包含短名称
%~a1 - 将%1扩展为文件属性
%~t1 - 将%1扩展为文件的日期/时间
%~z1 - 将%1扩展为文件大小
特别是
%~p1 - 将%1扩展为仅路径