Moh*_*deh 6 windows files directory batch-file strings
如何将目录的最后一部分存储在变量中?
例如,我有以下路径:A\B\C\D,我想存储D在像file_name=D.
由于您的 Windows 标签,我假设您cmd.exe内置了扩展。如果是这种情况,您可以使用FOR's 的两个特殊替换变量引用:
给定一个%A包含路径和文件的变量:
%~nA将输出文件名,%~xA将输出文件扩展名。以下示例使用管道字符|作为分隔符。该管道是文件名和路径无效字符,应该不会出现在一个路径。这将允许路径和文件名中有空格。请参阅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
Run Code Online (Sandbox Code Playgroud)
另外,你应该没有在您的扩展cmd.exe,您可以使用delims=\,算上目录分隔符,并基于该号码拆分您的路径/文件字符串。
编辑:根据您对错误的评论。以上是命令行上的示例。如果要在批处理脚本中执行相同的操作,则需要%在变量上加倍:
FOR /F "delims=|" %%A IN ("%FSPATH%") do echo %%~nxA
Run Code Online (Sandbox Code Playgroud)
要在FOR循环外使用该值,您需要将该值分配给另一个变量。该变量%%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%
Run Code Online (Sandbox Code Playgroud)