Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 在批处理文件中,如何将文件名和文件扩展名与文件路径分开?_Windows_Batch File - Fatal编程技术网

Windows 在批处理文件中,如何将文件名和文件扩展名与文件路径分开?

Windows 在批处理文件中,如何将文件名和文件扩展名与文件路径分开?,windows,batch-file,Windows,Batch File,我有一个接受文件路径的批处理文件。然后我需要分别隔离文件名和文件扩展名。例如,如果我的文件路径是“\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 "FILENAM

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

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

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

有关更多选项,请参阅。

您可以使用
%~n
作为文件名,使用
%~x
作为扩展名

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
你已经做的只是将两者结合起来。对每个部分分别使用它们

rem Filename
for /F "delims=" %%A in ("%FILEPATH%") do set "FILENAME=%%~nA"

rem Extension
for /F "delims=" %%A in ("%FILEPATH%") do set "FILENAME=%%~xA"

有关更多选项,请参阅。

我认为您应该查看

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

特别是

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


我想你应该看看

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

特别是

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


听起来很简单,那么我还需要两个for循环吗?dbenham在一个循环中完成了,使用一个代码块设置多个变量sunds很简单,那么我还需要两个for循环吗?dbenham在一个循环中完成了,使用一个代码块设置多个感兴趣的变量sout,最后一行做了什么?@BaliC-它只是打印了一个所有以
文件
开头的变量定义,不区分大小写。我把它放在那里只是为了显示赋值的结果。出于兴趣,最后一行做什么?@BaliC-它只是打印出所有以
文件
开头的变量定义,不区分大小写。我把它放在那里只是为了显示赋值的结果作业。