2

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

这是我所拥有的:

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
4

2 回答 2

1

您可以使用 过滤掉重解析点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"

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

于 2013-09-12T10:04:06.143 回答
0

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

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

那应该可以完美地工作。我正在寻找通过for /r循环执行此操作的方法。它可能涉及dirfor /r /d. 告诉我这是否适合你。

莫娜

于 2013-09-12T01:56:40.167 回答