Board logo

标题: [已结]有没有变量是可以直接获得当前目录名(不含路径) [打印本页]

作者: cgi     时间: 2008-7-3 09:01    标题: [已结]有没有变量是可以直接获得当前目录名(不含路径)

请问有没有变量是可以直接获得当前目录名(不含路径)

[ Last edited by HAT on 2008-10-28 at 21:01 ]
作者: HAT     时间: 2008-7-3 09:08

@echo off
set curpath=%~p0
set curpath=%curpath:\=%
echo %curpath%

作者: hongewuyan     时间: 2008-7-3 11:33
啊。。。看了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%
作者: 26933062     时间: 2008-7-3 11:33
直接的变量没有,必须进行处理。
@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 ]
作者: HAT     时间: 2008-7-3 12:03

@echo off
for %%a in ("%~f0\..") do echo 文件的父文件夹 %%~nxa

作者: 26933062     时间: 2008-7-3 12:07
5楼的方法在根目录下会没有显示
作者: ngd     时间: 2008-7-3 12:46

for /f "delims=" %a in ("%cd%") do echo %~na

作者: cgi     时间: 2008-7-3 13:12
多谢各位前辈
作者: terse     时间: 2008-7-3 15:26
@echo off
for /f "delims=" %%a in ("%cd%") do if "%%~na"=="" (echo %%~dpa)else echo %%~na
pause
作者: qwd     时间: 2008-7-5 00:19
@echo off
echo %~nx0
pause
作者: pighead123     时间: 2008-10-28 18:56
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!
)

处理两层路径的代码 需要再改