Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 检查当前文件夹是否为根目录_Batch File_Batch Processing - Fatal编程技术网

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,这可以简化为在(“…”)中为/F
FOR/F“tokens=1,2”%%%a执行单个操作。如果“%%~fA”==“%%~fB”echo根文件夹,则执行此操作。此解决方案是最简单的可靠测试方法。如果用户定义了CD变量,
%CD:~3%
测试可能会失败。如果用户为CD定义了值,即使是
%\uuuuuuuuuuuuuuuuuuuuuucd:~3
也会在XP上失败。@dbenham,真不错。非常感谢。
if "%__cd__:~3%"=="" echo ROOT FOLDER