[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

批处理获取当前目录名

如本批处理所在的当前目录是:"C:\Documents and Settings\All Users"
要求只显示当前目录名:All Users

  1. @echo off
  2. call :get "%cd%"
  3. pause>nul
  4. exit
  5. :get
  6. echo %~n1
复制代码

[ 本帖最后由 梦想种子 于 2008-3-29 20:55 编辑 ]
3

评分人数

静水流深...

TOP

参考二楼兄弟的思路:
  1. @echo off
  2. for %%i in ("%cd%") do echo %%~ni
  3. pause
复制代码
笨方法:
  1. @echo off
  2. set a=%cd: =:%
  3. set a=%a:\= %
  4. for %%j in (%a%) do (set a=%%j)
  5. set a=%a::= %
  6. echo %a%
  7. pause
复制代码

TOP

呵呵,笨办法还有
  1. @echo off
  2. set "path=C:\Documents and Settings\All Users"
  3. for /l %%i in (1 1 10) do call set "path=%%path:*\=%%"
  4. echo %path%
  5. pause>nul
复制代码

TOP

再来一个

  1. @echo off
  2. set "path=C:\Documents and Settings\All Users"
  3. set "path=%path: =#%"
  4. set "path=%path:\= %"
  5. for %%i in (%path%) do set "path=%%i"
  6. echo %path:#= %
  7. pause>nul
复制代码

TOP

这么热闹,我也来一个
:
  1. @echo off
  2. call :loop "c:\1334 \459sdf fdh8\40958345\aaa.bbb.ccc"
  3. echo %a%
  4. pause&exit
  5. :loop
  6. for /f "tokens=1* delims=\" %%a in ("%~1") do (
  7.   set a=%%a
  8.   if not "%%b"=="" call :loop "%%b"
  9. )
  10. goto :eof
复制代码
技术问题请到论坛发帖求助!

TOP

还有更“蠢”的

注:以下“函数”并不完善,请勿随便套用!
  1. @echo off  & setlocal enabledelayedexpansion
  2. set "path=C:\Documents and Settings\All Users"
  3. call :GetTheStr "%path%"
  4. echo %res%
  5. pause>nul
  6. :GetTheStr str
  7. set "var=%~1"
  8. if not "%var:~-1%"=="\" (
  9.    set path=%var:~0,-1%
  10.    set res=%var:~-1%%res%
  11.    call :GetTheStr "!path!"
  12. )
复制代码

TOP

呵呵,搞的跟 随风兄的机理一样了!

不过比你的还“傻”,哈哈

TOP

呵呵,好热闹啊.

TOP

补充2楼不足之处
  1. @echo off
  2. call :get "%cd%.tmp"
  3. pause&exit
  4. :get
  5. echo %~n1
复制代码

TOP

回复 10楼 的帖子

噢,对...否则遇到名字类似“bathome.files”的文件夹时就会错误输出。
1

评分人数

静水流深...

TOP

学习学习中。嘿

TOP

回复 4楼 的帖子
path是系统环境变量,不要随便用它作为一般变量名哦,小心无意中惹出麻烦来而难以检测(当然只是影响这个bat,不会改变系统设置)


回复 10楼 的帖子
无需%cd%.tmp,下面可以直接用echo %~nx1
1

评分人数

命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

  1. @echo off
  2. set "a=%cd%"
  3. :loop
  4. set "v=%a:~0,1%"
  5. if "%v%"=="\" set /a n+=1
  6. set a=%a:~1%
  7. if "%a%"=="" goto xianshi
  8. goto loop
  9. :xianshi
  10. set /a n+=1
  11. for /f "tokens=%n% delims=\" %%i in ("%cd%") do echo %%i&pause>nul
复制代码
1

评分人数

(*^_^*)

TOP

C:\1\2\3\
for %%i in (.) do @echo %%~ni
pause
取3

for %%i in (..) do @echo %%~ni
pause
取2
1

评分人数

TOP

返回列表