标题: 批处理获取当前目录名 [打印本页]
作者: foxJL 时间: 2008-3-27 14:09 标题: 批处理获取当前目录名
如本批处理所在的当前目录是:"C:\Documents and Settings\All Users"
要求只显示当前目录名:All Users
作者: 梦想种子 时间: 2008-3-29 16:09
- @echo off
- call :get "%cd%"
- pause>nul
- exit
- :get
- echo %~n1
复制代码
[ 本帖最后由 梦想种子 于 2008-3-29 20:55 编辑 ]
作者: foxJL 时间: 2008-3-29 21:11
参考二楼兄弟的思路:- @echo off
- for %%i in ("%cd%") do echo %%~ni
- pause
复制代码
笨方法:- @echo off
- set a=%cd: =:%
- set a=%a:\= %
- for %%j in (%a%) do (set a=%%j)
- set a=%a::= %
- echo %a%
- pause
复制代码
作者: youxi01 时间: 2008-3-29 21:29
呵呵,笨办法还有- @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
复制代码
作者: youxi01 时间: 2008-3-29 21:33 标题: 再来一个
- @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
复制代码
作者: 随风 时间: 2008-3-29 21:45
这么热闹,我也来一个
:- @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
复制代码
作者: youxi01 时间: 2008-3-29 21:45 标题: 还有更“蠢”的
注:以下“函数”并不完善,请勿随便套用!- @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!"
- )
复制代码
作者: youxi01 时间: 2008-3-29 21:47
呵呵,搞的跟 随风兄的机理一样了!
不过比你的还“傻”,哈哈
作者: foxJL 时间: 2008-3-29 21:54
呵呵,好热闹啊.
作者: fastslz 时间: 2008-3-30 14:02
补充2楼不足之处
- @echo off
- call :get "%cd%.tmp"
- pause&exit
- :get
- echo %~n1
复制代码
作者: 梦想种子 时间: 2008-3-30 14:32 标题: 回复 10楼 的帖子
噢,对...否则遇到名字类似“bathome.files”的文件夹时就会错误输出。
作者: a5417871 时间: 2009-3-30 06:09
学习学习中。嘿
作者: zqz0012005 时间: 2009-3-30 09:35
回复 4楼 的帖子
path是系统环境变量,不要随便用它作为一般变量名哦,小心无意中惹出麻烦来而难以检测(当然只是影响这个bat,不会改变系统设置)
回复 10楼 的帖子
无需%cd%.tmp,下面可以直接用echo %~nx1
作者: keen 时间: 2009-3-30 22:51
- @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
复制代码
作者: 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
回复 14# keen
不能显示根目录的...
作者: 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
回复 4楼 的帖子
path是系统环境变量,不要随便用它作为一般变量名哦,小心无意中惹出麻烦来而难以检测(当 ...
zqz0012005 发表于 2009-3-30 09:35
echo a=%~nx0
这个是最简单了的吧
作者: qhmpv 时间: 2019-6-4 20:47
各位大神,你们编了能不能后面给个解释,不然我们想学但是奈和看不懂啊。。
作者: miqilaosu 时间: 2019-6-10 11:24
回复 23# cyh1818
这个好像是获取当前文件名吧
作者: impk 时间: 2019-7-30 21:47
- @echo off
- for %%i in ("%cd%") do echo %%~ni
- pause
复制代码
作者: 唯尘 时间: 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
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |