找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 70948|回复: 27

批处理获取当前目录名

[复制链接]
发表于 2008-3-27 14:09:18 | 显示全部楼层 |阅读模式
如本批处理所在的当前目录是:"C:\Documents and Settings\All Users"
要求只显示当前目录名:All Users
发表于 2008-3-29 16:09:48 | 显示全部楼层
  1. @echo off
  2. call :get "%cd%"
  3. pause>nul
  4. exit
  5. :get
  6. echo %~n1
复制代码

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

评分

参与人数 3PB +7 技术 +1 收起 理由
yhcfsr + 1 很经典
youxi01 + 2
foxJL + 5 很不错

查看全部评分

 楼主| 发表于 2008-3-29 21:11:48 | 显示全部楼层
参考二楼兄弟的思路:
  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
复制代码
发表于 2008-3-29 21:29:35 | 显示全部楼层
呵呵,笨办法还有
  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
复制代码
发表于 2008-3-29 21:33:09 | 显示全部楼层

再来一个

  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
复制代码
发表于 2008-3-29 21:45:16 | 显示全部楼层
这么热闹,我也来一个
:
  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
复制代码
发表于 2008-3-29 21:45:48 | 显示全部楼层

还有更“蠢”的

注:以下“函数”并不完善,请勿随便套用!
  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. )
复制代码
发表于 2008-3-29 21:47:17 | 显示全部楼层
呵呵,搞的跟 随风兄的机理一样了!

不过比你的还“傻”,哈哈
 楼主| 发表于 2008-3-29 21:54:51 | 显示全部楼层
呵呵,好热闹啊.
发表于 2008-3-30 14:02:44 | 显示全部楼层
补充2楼不足之处
  1. @echo off
  2. call :get "%cd%.tmp"
  3. pause&exit
  4. :get
  5. echo %~n1
复制代码
发表于 2008-3-30 14:32:57 | 显示全部楼层

回复 10楼 的帖子

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

评分

参与人数 1PB +1 收起 理由
tireless + 1 !

查看全部评分

发表于 2009-3-30 06:09:48 | 显示全部楼层
学习学习中。嘿
发表于 2009-3-30 09:35:50 | 显示全部楼层
回复 4楼 的帖子
path是系统环境变量,不要随便用它作为一般变量名哦,小心无意中惹出麻烦来而难以检测(当然只是影响这个bat,不会改变系统设置)


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

评分

参与人数 1PB +1 收起 理由
tireless + 1 !!

查看全部评分

发表于 2009-3-30 22:51:57 | 显示全部楼层

  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
复制代码

评分

参与人数 1PB +3 收起 理由
wxcute + 3 很不错。

查看全部评分

发表于 2009-4-20 19:51:32 | 显示全部楼层
C:\1\2\3\
for %%i in (.) do @echo %%~ni
pause
取3

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

评分

参与人数 1PB +3 收起 理由
wxcute + 3 很好哦。

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 22:41 , Processed in 0.018138 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表