For loop 在搜索.pst文件时,当文件到达隐藏的快捷方式文件夹时,它将保持循环

For loop 在搜索.pst文件时,当文件到达隐藏的快捷方式文件夹时,它将保持循环,for-loop,batch-file,infinite-loop,filepath,shortcuts,For Loop,Batch File,Infinite Loop,Filepath,Shortcuts,下面的命令创建了一个无限循环,这不是我想要的,因为我正在迭代文件,它需要在某个时候结束 以下是我所拥有的: cd C:\ FOR /R %i IN (*.pst) do @echo %i 查看发生的情况是,当它到达AppData并找到.pst(在AppData\Local\Microsoft\Outlook中)时,AppData\Local中有一个名为“Application Data”的快捷文件夹,它会循环回AppData\Local,但会不断将其名称添加到地址,如下所示: %AppData

下面的命令创建了一个无限循环,这不是我想要的,因为我正在迭代文件,它需要在某个时候结束

以下是我所拥有的:

cd C:\
FOR /R %i IN (*.pst) do @echo %i
查看发生的情况是,当它到达AppData并找到.pst(在AppData\Local\Microsoft\Outlook中)时,AppData\Local中有一个名为“Application Data”的快捷文件夹,它会循环回AppData\Local,但会不断将其名称添加到地址,如下所示:

%AppData%\Local\Application Data\Application Data\Application Data\Microsoft\Outlook\%filename%.pst
我可以在代码中添加什么来防止循环,或者完全忽略快捷方式,以便循环在找到我需要的所有文件时结束,这会更好

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

这似乎做了类似的事情:

dir /s /b *.pst

好的,我建议您对文件使用
,如果您使用的是windows 7,这些文件应该在您的计算机上。有关详细信息,请键入文件/?。试试这个:

forfiles /p "C:\" /s /m "*.pst" /c "cmd /c (Echo @path)"
这应该很有效。我正在寻找一个
for/r
循环来实现这一点的方法。它可能涉及一个
dir
签入/r/d。告诉我这是否适合你


Mona

您可以使用
DIR/A-L
筛选出重新分析点

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

使用以下内容代替

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"

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

以前帮助我使用批处理文件循环问题。
。好的,我所做的是将所有代码保存到findfiles.bat。第一个是返回一个dir/b\。第二个原因是不给我任何东西。我不太确定,可能是我做错了什么。如果我将/s添加到('dir/b“%~2\%~1”),我将再次通过所有快捷方式。请选中“编辑”。Ideia正在执行“手动”
/S
,忽略重新分析点。编辑只是回显在手动终止批处理之前未找到的文件。