楼 主
[已结]有没有变量是可以直接获得当前目录名(不含路径)
发表于 2008-07-03 09:01 · 中国 台湾 中华电信(HiNet)数据中心
初级用户
★
积分 38 发帖 14 注册 2007-03-27 01:30 19年会员 UID 83007 性别 男
状态 离线
请问有没有变量是可以直接获得当前目录名(不含路径)
[ Last edited by HAT on 2008-10-28 at 21:01 ]
第 2 楼
发表于 2008-07-03 09:08 · 美国 惠普HP
版主
★★★★★
积分 9,023 发帖 5,017 注册 2007-05-31 19:39 19年会员 UID 89899 性别 男
状态 离线
@echo off
set curpath=%~p0
set curpath=%curpath:\=%
echo %curpath%
第 3 楼
发表于 2008-07-03 11:33 · IANA 局域网IP(Private-Use)
初级用户
★
积分 65 发帖 29 注册 2008-03-24 12:17 18年会员 UID 113853 性别 男
状态 离线
啊。。。看了HAT的代码才知道 %0 也可以直接拿来这样扩展的,受教了。
不过HAT的代码似乎对于二级以上的路径有问题,会把整个路径里面的\去除后连在一起。
我之前搞过一个剥取当前路径的批处理,代码比较啰嗦,不知道有没有更简洁的方法:
@echo off
set curpath=%~p0
:loop
for /f "tokens=1* delims=\" %%i in ('echo %curpath%') do (
set a=%%i
set b=%%j
)
set curpath=%b%
echo %b% | find /i "\" > nul
if errorlevel 1 goto ok
if errorlevel 0 goto loop
:ok
echo %a%
第 4 楼
发表于 2008-07-03 11:33 · 中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268 发帖 879 注册 2006-12-19 16:23 19年会员 UID 73968 性别 男
状态 离线
直接的变量没有,必须进行处理。
@echo off
call :loop "%~dp0"
pause
:loop
for /f "tokens=1* delims=\" %%a in ("%~1") do (
if "%%b"=="" (echo %%a) else call :loop "%%b"
)
goto :eof
@echo off
set "var=%cd%"
:loop
set "var1=%var:*\=%"
set "var=%var1%"
if not "%var1%"=="%var:\=%" goto loop
echo %var1%
pause
[
Last edited by 26933062 on 2008-7-3 at 11:47 AM ]
致精致简!
第 5 楼
发表于 2008-07-03 12:03 · 美国 惠普HP
版主
★★★★★
积分 9,023 发帖 5,017 注册 2007-05-31 19:39 19年会员 UID 89899 性别 男
状态 离线
@echo off
for %%a in ("%~f0\..") do echo 文件的父文件夹 %%~nxa
第 6 楼
发表于 2008-07-03 12:07 · 中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268 发帖 879 注册 2006-12-19 16:23 19年会员 UID 73968 性别 男
状态 离线
第 7 楼
发表于 2008-07-03 12:46 · 中国 安徽 马鞍山 电信
中级用户
★★
拟谷盗
积分 312 发帖 108 注册 2007-01-21 11:36 19年会员 UID 77238 性别 男
状态 离线
for /f "delims=" %a in ("%cd%") do echo %~na
FLOSS
第 8 楼
发表于 2008-07-03 13:12 · 中国 台湾 中华电信(HiNet)数据中心
初级用户
★
积分 38 发帖 14 注册 2007-03-27 01:30 19年会员 UID 83007 性别 男
状态 离线
第 9 楼
发表于 2008-07-03 15:26 · 中国 江苏 常州 武进区 电信
银牌会员
★★★
积分 2,404 发帖 946 注册 2005-09-08 13:44 20年会员 UID 42345
状态 离线
@echo off
for /f "delims=" %%a in ("%cd%") do if "%%~na"=="" (echo %%~dpa)else echo %%~na
pause
简单!简单!再简单!
第 10 楼
发表于 2008-07-05 00:19 · 中国 河南 郑州 联通
初级用户
★★
积分 161 发帖 56 注册 2007-10-01 00:42 18年会员 UID 98672 性别 男
状态 离线
@echo off
echo %~nx0
pause
第 11 楼
发表于 2008-10-28 18:56 · 中国 广东 茂名 电信
初级用户
★
积分 42 发帖 23 注册 2006-02-13 04:23 20年会员 UID 50270
状态 离线
cls
setlocal enabledelayedexpansion
for /f "tokens=1,2* delims=\" %%i in ('echo %~p0') do (
set pathtemp=%%i
if not "%%j"=="" set pathtemp=%%j
echo !pathtemp!
)
处理两层路径的代码 需要再改
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正