[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 【已解决】批处理字符串提取的问题

本帖最后由 jian123ch 于 2014-10-25 22:56 编辑

本人用批处理做个小工具的时候,遇到一个难道,就是有关路径处理的问题:
任意一个完整路径,我样想才能准确的提取到最后一级目录名。如:c:\tmp1\tmp2\tmp3...\tmpn,d:\tmp1\tmp2\tmp3\...\tmpn这些随机多级目录,目录深度也是随机的,我怎么样才能准确提取到最后一级目录名tmpn(注意:“tmpn”只是举个例子,可以是其他目录名,该目录名的字符数不确定)。还望各位大神不吝赐教呀!!!
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 neorobin 于 2014-10-24 16:12 编辑

最后一级目录名后不要跟反斜杠, 最后一级目录名中如果不带 . 号,  可以用 %%~na,   如果带点号, 如 tmpn.abcd  就用 %%~nxa
例中: tmpn.abcd 无论是目录名还是文件名, 只要最后别跟一个反斜杠,  都能得到  同样的结果.
  1. for %%a in ("c:\tmp1\tmp2\tmpn.abcd") do echo,%%~nxa
复制代码
2

评分人数

TOP

回复 2# neorobin


    不带 . 号也可以用 %%~nxa

TOP

本帖最后由 neorobin 于 2014-10-24 18:12 编辑

回复 3# CrLf

所以我说 "可以用 %%~na",  而不是 "必须用"
所以我直接用的 %%~nxa , 而不是 %%~na

TOP

回复 2# neorobin


    貌似后面带不带斜杠都可以
  1. set "str=c:\tmp1\tmp2\tmp3...\tmpn\"
  2. rem set "str=c:\tmp1\tmp2\tmp3...\tmpn"
  3. for %%a in ("%str%\.") do echo,%%~nxa
复制代码

TOP

回复 5# apang
再加一杠"%str%\.\"

TOP

%~ni、%~xi等这些变量扩展不是只作用于文件吗?比如%~ni是扩展为文件名,%~xi是将变量扩展为文件的扩展名(文件类型或后缀名),怎么也可以用于目录(文件夹)吗?

TOP

返回列表