3行脚本得到结果......
找到了 2 种额外的方法来实现目标,与此问题的其他答案不同,它不需要批处理“功能”,不需要延迟扩展,也没有 Tim Peel 的答案对目录深度的限制:
@echo off
SET CDIR=%~p0
SET CDIR=%CDIR:~1,-1%
SET CDIR=%CDIR:\=,%
SET CDIR=%CDIR: =#%
FOR %%a IN (%CDIR%) DO SET "CNAME=%%a"
ECHO Current directory path: %CDIR%
SET CNAME=%CNAME:#= %
ECHO Current directory name: %CNAME%
pause
修订:在我的新修订之后,这是一个示例输出:
Current directory path: Documents#and#Settings,username,.sqldeveloper,tmp,my_folder,MY.again
Current directory name: MY.again
Press any key to continue . . .
这意味着脚本不处理文件夹名称中的“#”或“,”,但可以对其进行调整。
附录:在dostips论坛中询问某人后,找到了一种更简单的方法:
@echo off
SET "CDIR=%~dp0"
:: for loop requires removing trailing backslash from %~dp0 output
SET "CDIR=%CDIR:~0,-1%"
FOR %%i IN ("%CDIR%") DO SET "PARENTFOLDERNAME=%%~nxi"
ECHO Parent folder: %PARENTFOLDERNAME%
ECHO Full path: %~dp0
pause>nul