1

我有一个接受文件路径的批处理文件。然后我需要分别隔离文件名和文件扩展名。例如,如果我的文件路径是“\svr-01\My Docs\My Spreadsheet.xls”,那么我需要两个单独的变量;一个包含“我的电子表格”,一个包含“.xls”。

继承人我到目前为止。我已经能够将文件名和扩展名与路径分开:

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

然后我如何将文件名和扩展名与这个变量分开?

4

3 回答 3

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
于 2012-06-19T16:08:49.293 回答
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"

有关更多选项,请参见此处

于 2012-06-19T16:05:42.817 回答
1

我觉得你应该看看

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

特别是

%~p1 - 仅将 %1 扩展为路径

于 2017-02-28T15:14:01.370 回答