找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 30812|回复: 6

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

[复制链接]
发表于 2014-10-24 15:20:02 | 显示全部楼层 |阅读模式
本帖最后由 jian123ch 于 2014-10-25 22:56 编辑

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

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2014-10-24 16:07:04 | 显示全部楼层
本帖最后由 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技术 +2 收起 理由
jian123ch + 1 谢谢!
Batcher + 1 乐于助人

查看全部评分

发表于 2014-10-24 17:46:58 | 显示全部楼层
回复 2# neorobin


    不带 . 号也可以用 %%~nxa
发表于 2014-10-24 17:58:26 | 显示全部楼层
本帖最后由 neorobin 于 2014-10-24 18:12 编辑

回复 3# CrLf

所以我说 "可以用 %%~na",  而不是 "必须用"
所以我直接用的 %%~nxa , 而不是 %%~na
发表于 2014-10-24 19:10:34 | 显示全部楼层
回复 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
复制代码
发表于 2014-10-24 19:24:36 | 显示全部楼层
回复 5# apang
再加一杠"%str%\.\"
 楼主| 发表于 2014-10-24 23:52:55 | 显示全部楼层
%~ni、%~xi等这些变量扩展不是只作用于文件吗?比如%~ni是扩展为文件名,%~xi是将变量扩展为文件的扩展名(文件类型或后缀名),怎么也可以用于目录(文件夹)吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 20:50 , Processed in 0.034857 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表