在搜索 .pst 文件时,FOR 在到达隐藏的快捷方式文件夹时会不断循环



以下命令创建了一个无限循环,这不是我想要的,因为我正在遍历文件并且它需要在某个时候结束......

这是我所拥有的:

cd C:
FOR /R %i IN (*.pst) do @echo %i

看看会发生什么,当它到达 AppData 并找到一个 .pst(在 AppData\Local\Microsoft\Outlook 中),AppData\Local 中有一个名为"应用程序数据"的快捷方式文件夹,它循环回 AppData\Local,但不断将其名称添加到地址中,如下所示:

%AppData%LocalApplication DataApplication DataApplication DataMicrosoftOutlook%filename%.pst

我可以向代码中添加什么以防止它循环,或者更好地完全忽略快捷方式,以便在找到我需要的所有文件时循环结束?

-----------编辑-------------

这似乎做了类似的事情:

dir /s /b *.pst
您可以使用

DIR /A-L过滤掉重新分析点。

但是,使用 DIR /A-L /S 也不起作用,因为重新分析点内容不是重新分析点,所以请尝试以下操作:

代替FOR使用:

FindFiles.bat *.pst c:

使用以下命令创建FindFiles.bat文件:

@ECHO OFF
:GetDirFiles %1=Wildcard %2=Path
FOR %%f IN ("%~f2%~1") DO ECHO %%~ff
FOR /F "DELIMS=" %%d IN ('DIR /B /AD-L "%~f2"') DO CALL :GetDirFiles %1 "%~2%%d"

这将递归获取所有不是重新分析点的目录,并回显每个目录的匹配模式。

好的,如果您使用的是Windows 7,我建议您使用应该在您的计算机上的forfiles。键入 forfiles /? 了解更多信息。试试这个:

forfiles /p "C:" /s /m "*.pst" /c "cmd /c (Echo @path)"

这应该完美地工作。我正在寻找通过for /r循环来做到这一点的方法。它可能涉及for /r /d中的dir检查。告诉我这是否适合您。

蒙纳

最新更新