如何将目录的最后部分存储在variables中?
例如,我有以下path: A\B\C\D ,我想存储D像variablesfile_name=D
由于您的Windows标记,我假设您的cmd.exe具有内置的扩展名。 如果是这样的话,可以使用两个FOR的特殊replacevariables引用:
给定一个variables%A ,包含一个path和文件:
%~nA会输出文件名, %~xA会输出文件扩展名。 以下示例使用pipe道字符| 作为分隔符。 pipe道是文件和path的无效字符,不应出现在path中。 这将允许path和文件名中的空格。 见FOR /? 为完整的细节。
C:\> SET FSPATH=C:\WINDOWS\Temp\file.txt C:\> echo %FSPATH% C:\WINDOWS\Temp\file.txt C:\> FOR /F "delims=|" %A IN ("%FSPATH%") do echo %~nxA file.txt
或者,如果在cmd.exe没有扩展名,则可以使用delims=\ ,计算目录分隔符并根据该数字拆分path/文件string。
编辑:根据你的评论关于错误。 以上是命令行上的示例。 如果要在批处理脚本中执行相同的操作,则需要将variables上的%加倍:
FOR /F "delims=|" %%A IN ("%FSPATH%") do echo %%~nxA
要使用FOR循环之外的值,您需要将该值分配给另一个variables。 variables%%A仅限于FOR的范围。
:: example.bat SET FSPATH=C:\Windows\bfsvc.exe FOR /F "delims=|" %%A IN ("%FSPATH%") DO ( echo Inside loop %%~nxA SET SOMEFILE=%%~nxA ) ECHO Outside loop %SOMEFILE%
试试这个:
for %f in (A\B\C\D) do set var=%~nxf