在批处理文件中,如何从文件路径中分离文件名和文件扩展名?

时间:2012-06-19 16:04:15

标签: windows batch-file

我有一个接受文件路径的批处理文件。然后我需要单独隔离文件名和文件扩展名。例如,如果我的文件路径是“\ 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%

我如何将文件名和扩展名与此变量分开?

3 个答案:

答案 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扩展为仅路径