Board logo

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

作者: jian123ch    时间: 2014-10-24 15:20     标题: 【已解决】批处理字符串提取的问题

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

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

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

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

作者: CrLf    时间: 2014-10-24 17:46

回复 2# neorobin


    不带 . 号也可以用 %%~nxa
作者: neorobin    时间: 2014-10-24 17:58

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

回复 3# CrLf

所以我说 "可以用 %%~na",  而不是 "必须用"
所以我直接用的 %%~nxa , 而不是 %%~na
作者: apang    时间: 2014-10-24 19:10

回复 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
复制代码

作者: neorobin    时间: 2014-10-24 19:24

回复 5# apang
再加一杠"%str%\.\"
作者: jian123ch    时间: 2014-10-24 23:52

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




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2