批处理之家's Archiver

foxJL 发表于 2008-3-27 14:09

批处理获取当前目录名

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

梦想种子 发表于 2008-3-29 16:09

[code]@echo off
call :get "%cd%"
pause>nul
exit
:get
echo %~n1[/code]

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

foxJL 发表于 2008-3-29 21:11

参考二楼兄弟的思路:[code]@echo off
for %%i in ("%cd%") do echo %%~ni
pause[/code]笨方法:[code]@echo off
set a=%cd: =:%
set a=%a:\= %
for %%j in (%a%) do (set a=%%j)
set a=%a::= %
echo %a%
pause[/code]

youxi01 发表于 2008-3-29 21:29

呵呵,笨办法还有[code]@echo off
set "path=C:\Documents and Settings\All Users"
for /l %%i in (1 1 10) do call set "path=%%path:*\=%%"
echo %path%
pause>nul[/code]

youxi01 发表于 2008-3-29 21:33

再来一个

[code]@echo off
set "path=C:\Documents and Settings\All Users"
set "path=%path: =#%"
set "path=%path:\= %"
for %%i in (%path%) do set "path=%%i"
echo %path:#= %
pause>nul[/code]

随风 发表于 2008-3-29 21:45

这么热闹,我也来一个
:[code]@echo off
call :loop "c:\1334 \459sdf fdh8\40958345\aaa.bbb.ccc"
echo %a%
pause&exit
:loop
for /f "tokens=1* delims=\" %%a in ("%~1") do (
  set a=%%a
  if not "%%b"=="" call :loop "%%b"
)
goto :eof[/code]

youxi01 发表于 2008-3-29 21:45

还有更“蠢”的

注:以下“函数”并不完善,请勿随便套用![code]@echo off  & setlocal enabledelayedexpansion
set "path=C:\Documents and Settings\All Users"
call :GetTheStr "%path%"
echo %res%
pause>nul

:GetTheStr str
set "var=%~1"
if not "%var:~-1%"=="\" (
   set path=%var:~0,-1%
   set res=%var:~-1%%res%
   call :GetTheStr "!path!"
)[/code]

youxi01 发表于 2008-3-29 21:47

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

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

foxJL 发表于 2008-3-29 21:54

呵呵,好热闹啊.

fastslz 发表于 2008-3-30 14:02

补充2楼不足之处
[code]@echo off
call :get "%cd%.tmp"
pause&exit
:get
echo %~n1[/code]

梦想种子 发表于 2008-3-30 14:32

回复 10楼 的帖子

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

a5417871 发表于 2009-3-30 06:09

学习学习中。嘿

zqz0012005 发表于 2009-3-30 09:35

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


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

keen 发表于 2009-3-30 22:51

[code]
@echo off
set "a=%cd%"
:loop
set "v=%a:~0,1%"
if "%v%"=="\" set /a n+=1
set a=%a:~1%
if "%a%"=="" goto xianshi
goto loop
:xianshi
set /a n+=1
for /f "tokens=%n% delims=\" %%i in ("%cd%") do echo %%i&pause>nul
[/code]

lxb1117 发表于 2009-4-20 19:51

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

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

lj314338817 发表于 2009-8-29 23:07

突然要用到这个命令,没有学批处理,只好学习了,突然觉得批处理很重要啊。

wangqi0077 发表于 2011-9-16 11:00

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=25234&ptid=785]14#[/url] [i]keen[/i] [/b]


    不能显示根目录的...

vampirexi 发表于 2016-5-11 23:05

学习学习啦~~好开心

taofan712 发表于 2017-2-28 09:38

现在才懂,《一日一教学》和《for入门到精通》是详细生动地讲命令格式、用途,新手练功区才是讲如何灵活运用、组合命令。 有必要将练功区所有的帖子全部翻遍
@echo off & for /f  "delims=" %%a in ("%~dp0.") do set/p=%%~na<nul&pause>nul

懒虫阿布 发表于 2018-7-26 22:32

学习,长知识了。

sms512 发表于 2018-7-29 12:48

非常感谢楼主分享,下载收藏、学习

gao19851998 发表于 2018-12-28 09:54

新人学习中,请多关照

cyh1818 发表于 2019-1-21 15:35

[quote]回复 4楼 的帖子
path是系统环境变量,不要随便用它作为一般变量名哦,小心无意中惹出麻烦来而难以检测(当 ...
[size=2][color=#999999]zqz0012005 发表于 2009-3-30 09:35[/color] [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=25188&ptid=785][img]http://bbs.bathome.net/images/common/back.gif[/img][/url][/size][/quote]


echo a=%~nx0

这个是最简单了的吧

qhmpv 发表于 2019-6-4 20:47

各位大神,你们编了能不能后面给个解释,不然我们想学但是奈和看不懂啊。。

miqilaosu 发表于 2019-6-10 11:24

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=217009&ptid=785]23#[/url] [i]cyh1818[/i] [/b]
这个好像是获取当前文件名吧

impk 发表于 2019-7-30 21:47

[code]@echo off
for %%i in ("%cd%") do echo %%~ni
pause[/code]

唯尘 发表于 2022-10-28 08:56

@echo off
set a=%cd%
set a=%a: =#%
set a=%a:\= %
for %%i in (%a%) do (set a=%%i)
echo %a:#= %
pause>nul

772074834 发表于 2023-5-5 09:37

@echo off
call :showDir %cd%
:showDir
echo %~n1
pause

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.