Batch file 检查当前文件夹是否为根目录
我目前正在编写一个批处理文件,它从一个特定的目录开始,比如说Batch file 检查当前文件夹是否为根目录,batch-file,batch-processing,Batch File,Batch Processing,我目前正在编写一个批处理文件,它从一个特定的目录开始,比如说C:\FirstFolder\SecondFolder\ThirdFolder\,应该在每个文件夹中执行一个任务,然后向上移动一个文件夹,直到它到达根目录(C:\) 这里的问题是,我们正在使用的驱动器不必是C:\,它可以是任何驱动器号,因此我不能只检查%cd%是否等于C:\来告诉程序停止遍历每个目录 有人能帮忙吗?像这样: if "%cd:~3,1%"=="" echo IS ROOT 如果当前文件夹的完整路径与父文件夹的完整路径相同
C:\FirstFolder\SecondFolder\ThirdFolder\
,应该在每个文件夹中执行一个任务,然后向上移动一个文件夹,直到它到达根目录(C:\
)
这里的问题是,我们正在使用的驱动器不必是C:\
,它可以是任何驱动器号,因此我不能只检查%cd%
是否等于C:\
来告诉程序停止遍历每个目录
有人能帮忙吗?像这样:
if "%cd:~3,1%"=="" echo IS ROOT
如果当前文件夹的完整路径与父文件夹的完整路径相同,则我们位于根目录下,
%cd:~3%
如果存在覆盖动态值的用户定义的cd变量,则测试可能失败
使用%\uuuu CD:~3%
更安全,因为它不能在Win 7或Win 8上被覆盖。不确定Vista,但它可以在XP上被覆盖。因此,如果在XP上,这个解决方案并不比%CD:~3%
好或坏
if "%__cd__:~3%"=="" echo ROOT FOLDER
有关
%\uuuu CD\uuuu%
的奇怪行为的更多信息,请参阅,如果您说“if(current.dir.has\u parentdir)then”这样的话会怎么样“?几秒钟前我也在考虑检查%cd%
的长度。在任何情况下,该检查都不会失败,因此它工作正常@JoelP,如果有人设置“cd=c:\somewhere”,使测试无效,则有可能失败。而且,不管用户设置了cd
变量,可能我错了,但正确的测试不是%cd:~3,1%
?您可以有一个c:\x
文件夹。+1,这可以简化为在(“…”)中为/FFOR/F“tokens=1,2”%%%a执行单个操作。如果“%%~fA”==“%%~fB”echo根文件夹,则执行此操作。此解决方案是最简单的可靠测试方法。如果用户定义了CD变量,%CD:~3%
测试可能会失败。如果用户为CD定义了值,即使是%\uuuuuuuuuuuuuuuuuuuuuucd:~3
也会在XP上失败。@dbenham,真不错。非常感谢。
if "%__cd__:~3%"=="" echo ROOT FOLDER