我目前正在编写一个从特定目录开始的批处理文件 - 让我们说C:\FirstFolder\SecondFolder\ThirdFolder\
- 并且应该在每个文件夹中执行一项任务,然后上一个文件夹直到它已到达根目录(C:\
)。
这里的问题是我们正在处理的驱动器不一定是C:\
,它可能是任何驱动器号,所以我不能只检查%cd%
是否等于{{1告诉程序停止浏览每个目录。
任何人都可以帮忙吗?
答案 0 :(得分:5)
像这样:
if "%cd:~3,1%"=="" echo IS ROOT
答案 1 :(得分:3)
如果有用户定义的CD变量覆盖动态值,则%cd:~3%
测试可能会失败。
使用%__CD__:~3%
更安全,因为它无法在Win 7或Win 8上覆盖。不确定Vista,但它可以在XP上覆盖。因此,如果在XP上,此解决方案不会比%CD:~3%
更好或更差。
if "%__cd__:~3%"=="" echo ROOT FOLDER
有关%__CD__%
的奇怪行为的详情,请参阅Why can't I access a variable named __CD__ on Windows 7?。
答案 2 :(得分:2)
for %%a in (.) do for %%b in (..) do if "%%~fa"=="%%~fb" echo ROOT FOLDER
如果当前文件夹的完整路径与父文件夹的完整路径相同,那么我们就在根目录