批处理文件,以查找pdfs / doc / docx / etc.

时间:2015-11-12 21:57:03

标签: list batch-file search

寻找一些帮助脚本来搜索c:\ users \下的所有文件夹.pdf,.doc,.docx等。我正在清理一些带有文件的计算机,但我不想删除用户文件夹大部分只是它们的内容。这适用于医生办公室,用户不应该将任何东西保存到硬盘驱动器上,并且我已经实施了无保存策略,但希望关闭并保存现有数据,以备日后参考。

将从50多台计算机上的服务器使用psexec运行。如果可能的话,我希望输出是\ servername \ destinationfolder \ computername \ username \ file.pdf或类似的东西,所以我知道文件来自哪台计算机和用户。

我认为使用robocopy看起来像这样,但它似乎不起作用。

 @echo off
 for /f %%d in ('c:\users') do (
 robocopy c:\users\%%d \\servername\destinationfolder *.pdf /s

 for /f %%e in ('c:\users\%%d') do (
 robocopy c:\users\%%d\%%e \\servername\desinationfolder *.pdf /s
     )
 )

1 个答案:

答案 0 :(得分:0)

您错误地使用了FOR命令,但我认为您根本不需要它。以下内容应该在递归c:\users下面的每个子目录时删除它,收集指定的文件(根据需要添加扩展名),然后将它们复制到指定的目标位置。

ROBOCOPY c:\users \\servername\destinationfolder *.pdf *.doc *.docx /XJD /S

编辑:事实证明,OP使用的是比Windows更新版本的Windows,这需要添加/XJD开关,其中......

  

...将阻止解析目录连接点。这避免了   一个令人讨厌的递归问题,有时会出现在Windows上的“假”   诸如“文档和设置”之类的目录

编辑完整性:由@aschipfl激发,这是指向FOR命令 - FOR /F is used in a quite different way的错误指针。如果您想迭代文件系统的单个级别的所有目录,您可以执行以下操作:

FOR /D %%D IN ( c:\users\* ) DO ( ... )

但是,当接近这样的任务时,你不能轻易地创建像ROBOCOPY这样的目录结构而不需要编写大量的代码,而且当解决方案可以像上面那样简单时,这是不必要的。