我有一个接受文件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扩展为路径