当前位置:  开发笔记 > 编程语言 > 正文

循环文件夹字符串并解析出最后一个文件夹名称

如何解决《循环文件夹字符串并解析出最后一个文件夹名称》经验,为你挑选了3个好方法。

我需要获取当前正在执行的批处理文件的文件夹名称.我一直在尝试使用以下语法循环当前目录(目前这是错误的):

set mydir = %~p0
for /F "delims=\" %i IN (%mydir%) DO @echo %i

几个问题我似乎无法将'mydir'变量值作为搜索字符串传递.如果我传入命令,它似乎只能起作用; 我的语法错误,无法解决原因.

我的想法是使用'\'分隔符循环文件夹字符串,但这也会导致问题.如果我在每个循环上设置一个变量,那么最后一个值集将是当前文件夹名称.例如,给定以下路径:

C:\ Folder1中\文件夹2\Folder3\Archive.bat

我希望解析出'Folder3'的值.

我需要解析该值,因为它的名称将是我将在批处理文件中进一步创建的另一个文件夹的一部分.

非常感谢有人可以提供帮助.我可能会完全咆哮错误的树,所以任何其他方法也会受到极大的欢迎.



1> 小智..:

在努力解决其中一些建议后,我发现成功使用了以下1个衬垫(在Windows 2008中)

for %%a in (!FullPath!) do set LastFolder=%%~nxa


如果其他人没有像我一样立即看到相关性,那么`%% ~nxa`变量的最后一个字符必须等于所使用的FOR变量.所以,'%% a` ==`%% ~nxa`,`%% g` ==`%% ~nxg`等.

2> Patrick Cuff..:

你非常接近它:)这应该工作:

@echo OFF
set mydir="%~p0"
SET mydir=%mydir:\=;%

for /F "tokens=* delims=;" %%i IN (%mydir%) DO call :LAST_FOLDER %%i
goto :EOF

:LAST_FOLDER
if "%1"=="" (
    @echo %LAST%
    goto :EOF
)

set LAST=%1
SHIFT

goto :LAST_FOLDER

出于某种原因,for命令不喜欢'\'作为分隔符,因此我将所有'\'转换为';' 第一(SET mydir=%mydir:\=;%)



3> 小智..:

当我想找到当前目录的最后一段时,我找到了这个旧线程.以前的作者回答引导我到以下几点:

FOR /D %%I IN ("%CD%") DO SET _LAST_SEGMENT_=%%~nxI
ECHO Last segment = "%_LAST_SEGMENT_%"

如前所述,不要忘记在使用%_LAST_SEGMENT_%创建的任何路径周围加引号(就像我在我的示例中使用%CD%一样).

希望这有助于某人......

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有