Board logo

标题: [文件操作] [已解决]批处理怎样获取当前目录名称、非完整路径、父文件夹名? [打印本页]

作者: TonyW    时间: 2009-2-28 17:21     标题: [已解决]批处理怎样获取当前目录名称、非完整路径、父文件夹名?

首先,小弟不知道该求助帖发在这里对不对。在外面找了找,并没有求助板块。也就发在这里啦。如果不对请见谅。。
=====================================================================================
问题是这样的:
写一个批处理,来显示当前目录的名称。比如该批处理放在了桌面上,路径是:C:\Documents and Settings\Administrator\桌面 .但我要显示的是:该路径有多少个字符?其中包含多少个"\" ?最后才显示出“桌面”
这样。。但要有通用性。即该批处理放到任何地方它都能起做作用。如:d:\1\2\3\4\123 最后的显示是:123
也就是获取当前路径.最后一个以 " \ " 隔开的右边的字符串
这个是我写了一半后写不出来啦!!
  1. @echo off
  2. for /f "tokens=*" %%i in ('cd') do (
  3. echo %%i
  4. set k=%%i)
  5. :d
  6. if not "%k%"=="" (
  7. set /a num+=1
  8. set k=%k:~1%
  9. goto d)
  10. echo 这个路径有%num%个字符
  11. pause
复制代码
PS:这个问题已经困扰了我两天半的时间,一直想破头都没有想出来。
虽然有头绪但始终不能成功。我觉得再这样下去也是没有办法的。
本人的批处理实在差。。给各位添麻烦拉。不好意思!!
表达能力比较差,希望各位能看清我的问题。。。
各位大哥,解答完小弟的问题后,最要紧的是麻烦再动一下手指。把思路也献上!!

祝各位开心快乐!家庭幸福!
作者: yslyxqysl    时间: 2009-2-28 17:32

for %%i in ("%cd%") do echo %%~ni
作者: namejm    时间: 2009-2-28 17:39

  给你一段演示代码:
  1. @echo off
  2. set /a num1=0,num2=0
  3. set "str=%cd%"
  4. :loop
  5. set /a num1+=1
  6. if "%str:~0,1%"=="\" set /a num2+=1
  7. set "str=%str:~1%"
  8. if defined str goto loop
  9. echo 当前路径为:"%cd:"=%"
  10. echo 共计 %num1% 个字符,其中字符"\"有 %num2% 个
  11. for %%i in ("%cd%") do echo 当前目录名为:"%%~nxi"
  12. pause
复制代码

作者: Batcher    时间: 2009-2-28 18:17

  1. @echo off
  2. for %%i in ("%~dp0\.") do (
  3.   echo 该批处理的父文件夹是 %%~ni
  4. )
  5. pause
复制代码

作者: wxcute    时间: 2009-2-28 21:26

用 %~nx1 防止目录名含点
  1. @echo off
  2. call :CurDIR "%cd%"
  3. pause
  4. goto :eof
  5. :CurDIR
  6. echo %~nx1
复制代码

作者: defanive    时间: 2009-2-28 22:22

LS代码好,用了call,这样就可以节省一次for。。。
作者: CrLf    时间: 2011-8-25 22:54

回复 6# defanive


    for 的效率远高于 call...
作者: defanive    时间: 2011-8-25 23:25

回复 7# CrLf
我说怎么没见过这个帖子。。。
一看原来是09年的啊,还看到了jm的回复。。
作者: CrLf    时间: 2011-8-25 23:43

回复 8# defanive


晕,估计这主题被某位版主提升了,我在第一页看到才回复了的...




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