Board logo

标题: [文本处理] 【已解决】批处理怎样获取路径末尾文件夹名? [打印本页]

作者: wangjile    时间: 2013-7-3 11:45     标题: 【已解决】批处理怎样获取路径末尾文件夹名?

本帖最后由 wangjile 于 2013-7-3 14:43 编辑

我想获取路径末尾文件夹名,最近刚初步学习了for,所以自己写了以下代码:
  1. @echo off
  2. set /p lj=请拖曳打包文件夹至此:
  3. for /f "delims=\ tokens=3" %%i in (%lj%) do echo %%i
  4. pause
复制代码
这段代码可以获取到第三级的路径文件夹名称,但是在路径级数位置的情况下,并不能获取最后一级的文件夹名称,请问各位大虾,应该怎么处理??
作者: cutebe    时间: 2013-7-3 12:13

  1. @echo off
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. set /p lj=请拖曳打包文件夹至此:
  4. SET "LJ=%LJ:"=%"
  5. for /f "delims=" %%i in ("%lj%") do (
  6.  SET "LF=%%~DPi"
  7.  FOR /F "DELIMS=" %%D IN ("!LF:~,-1!")DO ECHO,%%~NXD
  8. )
  9. pause
复制代码

作者: wangjile    时间: 2013-7-3 12:51

cutebe 发表于 2013-7-3 12:13


你好,我刚测试了下,你写的P提取到的是最后一级文件夹的上级文件夹名称,看截图:
作者: cutebe    时间: 2013-7-3 13:15

看错了,呵呵!
  1. @echo off
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. set /p lj=请拖曳打包文件夹至此:
  4. SET "LJ=%LJ:"=%"
  5. for /f "delims=" %%i in ("%lj%") do ECHO,%%~NXi
  6. pause
复制代码
查看FOR /?有相关帮助。(即%%~后面怎么用)
作者: wangjile    时间: 2013-7-3 13:30

FOR /F "DELIMS=" %%D IN ("!LF:~,-1!")DO ECHO,%%~NXD
for /f "delims=" %%i in ("%lj%") do ECHO,%%~NXi

%~nxI       - 仅将 %I 扩充到一个文件名和扩展名
这两句有什么区别吗,最后的显示都是~nx扩展啊?

SET "LJ=%LJ:"=%"
这一句是什么意思啊,大虾,求解释?
作者: terse    时间: 2013-7-3 13:43

判断是文件还是是文件夹的情况
  1. @echo off
  2. set /p lj=请拖曳打包文件夹至此:
  3. for /f "tokens=*" %%i in ("%lj:"=%") do (
  4.     if exist "%%i\" (echo %%~nxi) else (
  5.        for /f "tokens=*" %%j in ("%%~fi\..") do echo %%~nxj
  6.     )
  7. )
  8. pause
复制代码
SET "LJ=%LJ:"=%"  去掉路径中的引号
作者: wangjile    时间: 2013-7-3 14:42

谢谢楼上几位大虾了,不过我还是看不明白,放着以后慢慢看吧!!
作者: cutebe    时间: 2013-7-3 15:30

本帖最后由 cutebe 于 2013-7-3 15:31 编辑

虽然有些知识可以以后了解,但扩展名却有必要现在了解!

有些目录是带点的,如:”TC2.0“,则点及后面的字符会被当成扩展名。即“.0“
如同文件扩展名一样:A.TXT 之扩展名为 .TXT

              TC2.0  A.TXT
%~NI   只表示文件名   TC2   A
%~XI   只表示扩展名   .0    .TXT

%~NXI  表示文件名与扩展名 TC2.0  A.TXT

作者: cutebe    时间: 2013-7-3 16:36

回复 5# wangjile
又看错了,晕。

没有区别,都是%~NX扩展没错。

结合前面的完整代码,因为前一句是在脱去一层目录的情况下再显示,就变成了倒数第二层目录了。




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