标题: [文本处理] 【已解决】批处理字符串提取的问题 [打印本页]
作者: 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 无论是目录名还是文件名, 只要最后别跟一个反斜杠, 都能得到 同样的结果.- 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
貌似后面带不带斜杠都可以- set "str=c:\tmp1\tmp2\tmp3...\tmpn\"
- rem set "str=c:\tmp1\tmp2\tmp3...\tmpn"
- 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 |