![Board logo](images/default/logo.gif)
标题: [文本处理] 【已解决】批处理怎样获取路径末尾文件夹名? [打印本页]
作者: wangjile 时间: 2013-7-3 11:45 标题: 【已解决】批处理怎样获取路径末尾文件夹名?
本帖最后由 wangjile 于 2013-7-3 14:43 编辑
我想获取路径末尾文件夹名,最近刚初步学习了for,所以自己写了以下代码:- @echo off
- set /p lj=请拖曳打包文件夹至此:
- for /f "delims=\ tokens=3" %%i in (%lj%) do echo %%i
- pause
复制代码
这段代码可以获取到第三级的路径文件夹名称,但是在路径级数位置的情况下,并不能获取最后一级的文件夹名称,请问各位大虾,应该怎么处理??
作者: cutebe 时间: 2013-7-3 12:13
- @echo off
- SETLOCAL ENABLEDELAYEDEXPANSION
- set /p lj=请拖曳打包文件夹至此:
- SET "LJ=%LJ:"=%"
- for /f "delims=" %%i in ("%lj%") do (
- SET "LF=%%~DPi"
- FOR /F "DELIMS=" %%D IN ("!LF:~,-1!")DO ECHO,%%~NXD
- )
- pause
复制代码
作者: wangjile 时间: 2013-7-3 12:51
cutebe 发表于 2013-7-3 12:13 ![](http://www.bathome.net/images/common/back.gif)
你好,我刚测试了下,你写的P提取到的是最后一级文件夹的上级文件夹名称,看截图:
作者: cutebe 时间: 2013-7-3 13:15
看错了,呵呵!- @echo off
- SETLOCAL ENABLEDELAYEDEXPANSION
- set /p lj=请拖曳打包文件夹至此:
- SET "LJ=%LJ:"=%"
- for /f "delims=" %%i in ("%lj%") do ECHO,%%~NXi
- 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
判断是文件还是是文件夹的情况- @echo off
- set /p lj=请拖曳打包文件夹至此:
- for /f "tokens=*" %%i in ("%lj:"=%") do (
- if exist "%%i\" (echo %%~nxi) else (
- for /f "tokens=*" %%j in ("%%~fi\..") do echo %%~nxj
- )
- )
- 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 |