标题: [文本处理] 如何利用for得到批处理完整路径的指定文件夹名? [打印本页]
作者: QINZDC 时间: 2011-3-8 22:30 标题: 如何利用for得到批处理完整路径的指定文件夹名?
字符串 就是我的bat的当前路径, 如G:\mfc\4\Code\Draw\Debug\demo.bat
这个bat可能在别的目录下,
如d:\a\b\c\draw\debug\demo.bat
前面的路径可能变化, 但是demo.bat上面总是 draw\debug\demo.bat.
我想获取draw的上一级目录,如何获取呢. 如上面2个例子,应该分别得到 code 和 c
我的一点想法: 利用 for /f 但是不知道如何写的出来, 因为 不知道前面到底取多少个 \, 只知道取倒数第4个, 但是不知道怎么写,
作者: Commander 时间: 2011-3-8 22:38
- @echo off
- for %%a in ("%~f0\..\..\..") do (
- echo %%~nxa
- )
- pause
复制代码
作者: QINZDC 时间: 2011-3-8 22:44
给解释下吧, 没有领会...
作者: Commander 时间: 2011-3-8 22:46
就是bat文件的上级目录的上级目录的上级目录
作者: QINZDC 时间: 2011-3-8 22:49
@echo off
for %%a in ("%~f0\..\..\..") do (
echo %%~nxa
)
pause
echo 里的 ~nx 又是什么呢
多谢
[ 本帖最后由 QINZDC 于 2011-3-8 23:13 编辑 ]
作者: CrLf 时间: 2011-3-8 23:09
原来可以如此,先前一直不知有这种取指定层文件夹名的办法
作者: liion631818 时间: 2011-3-8 23:15
- @echo off
- set "allPath=%~dp0"
- set "allPath=%allPath:~0,-12%"
- echo %allPath%
- call :demo "%allPath%"
- pause
- goto :eof
- :demo
- echo %~n1
复制代码
作者: QINZDC 时间: 2011-3-8 23:27
~n1 是倒数的意思么, 哪里的命令"?
作者: batman 时间: 2011-3-9 11:11
楼主不就是要获取批完整路径中draw文件夹的上级目录吗,这样是不是通用些?- @echo off
- set "str=%~0"
- :lp
- for /f "tokens=1* delims=\" %%a in ("%str%") do (
- if /i "%%a" equ "draw" goto next
- set "var=%%a"&set str=%%b&goto lp
- )
- :next
- echo %var%&pause>nul
复制代码
作者: liion631818 时间: 2011-3-9 13:31 标题: 回复 8楼 的帖子
%~n1 - 仅将 %1 扩充到一个文件名
目录应该就是特殊文件吧,个人理解
作者: Batcher 时间: 2011-3-9 20:14 标题: 回复 5楼 的帖子
多看看基础教程:浅谈批处理for命令中的变量扩展
http://bbs.bathome.net/thread-2205-1-1.html
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |