在batch file中,如何从文件path中分离文件名和文件扩展名?

我有一个接受文件path的batch file。 然后我需要分别隔离文件名和文件扩展名。 例如,如果我的文件path是“\ svr-01 \ My Docs \ My Spreadsheet.xls”,那么我需要两个单独的variables; 一个包含“My SpreadSheet”,另一个包含“.xls”。

inheritance人我到目前为止。 我已经能够分开文件名和path的延伸:

set FILEPATH=\\SVR-01\My Docs\My Spreadsheet.xls for /F "delims=" %%A in ("%FILEPATH%") do set "FILENAME=%%~nxA" echo.%FILENAME% 

那么我如何将这个variables的文件名和扩展名分开?

 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 

您可以使用%~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" 

在这里看到更多的选择。

我想你应该看看

%〜1 – 展开%1删除任何周围的引号(“)
%〜f1 – 将%1展开为完全限定的路径名​​称
%〜d1 – 仅将%1扩展为一个驱动器号
%〜p1 – 仅将%1扩展为路径
%〜n1 – 仅将%1扩展为文件名
%〜x1 – 仅将%1扩展为文件扩展名
%〜s1 – 扩展路径只包含短名称
%〜a1 – 将%1展开为文件属性
%〜t1 – 将%1扩展到文件的日期/时间
%〜z1 – 将%1扩展为文件的大小

特别是具有

%〜p1 – 仅将%1扩展为路径