Windows批处理文件到c:\ * .pst并将它们复制到网络驱动器,而没有重复名称的文件会相互覆盖

时间:2012-07-24 22:26:46

标签: for-loop batch-file duplicates xcopy

我的最终用户将Outlook pst文件分散在他们的c驱动器上。我想出了这个批处理文件来找到它们并将它们复制到最终用户的M盘。

rem **************************************************
@echo off
if not exist m:\migration mkdir m:\migration
if not exist m:\migration\pst mkdir m:\migration\pst
c:
dir /b c:\*.pst /s > m:\migration\pathdata.txt

pause

for /f "tokens=1 delims=" %%a in (m:\migration\pathdata.txt) do (copy "%%a" m:\migration\pst) 

pause

但是,如果文件具有相同的名称,这个微不足道的解决方案无法处理(这是预期的)(archive.pst)

我希望使用xcopy来复制它们并在驱动器M上创建它们的目录结构,这样,具有相同名称的文件就不会互相覆盖。但我失败了。

有什么想法吗?感谢您帮助我

4 个答案:

答案 0 :(得分:2)

我使用此博客寻求帮助请检查一下。它将搜索文件,然后复制到网络位置

http://tshootissues.blogspot.com

答案 1 :(得分:0)

XCopy /-U c:\*.pst m:\migration\pst

/ U选项仅复制已存在的文件。 / -U应该只复制那些尚不存在的那些。

echo n|copy /-y c:\*.pst m:\migration\pst

来源:http://www.dostips.com/forum/viewtopic.php?t=537

答案 2 :(得分:0)

dir /b c:\*.pst /s > m:\migration\pathdata.txt你应该注意到一些事情 如果你打开你的pathdata.txt或for /f "tokens=1 delims=" %a in (m:\migration\pathdata.txt) do @echo %i,你会发现你有这样的路径:

C:\Documents and Settings\USERNAME\AppData\Local\Application Data\Application Data\Application Data\Microsoft\Outlook\FILENAME.pst
C:\Users\USERNAME\AppData\Local\Application Data\Application Data\Application Data\Application Data\Microsoft\Outlook\FILENAME.pst

依此类推,但请注意它实际上是同一个文件。发生这种情况是因为dir /b c:\*.pst /s将通过文件夹快捷方式,因此您将有一个.txt文件,其中包含许多指向同一.pst的路径名,当您xcopy时,您将多次复制同一文件。< / p>

您可以查看解决问题的this post,然后您可以执行robocopy答案或根据需要进行修改。

由于您有多个用户,并且您的M驱动器是网络驱动器,您可以使用m:\migration\%username%\pst让用户复制它。这样,如果用户的pst与另一个用户的pst具有相同的名称,您将不会覆盖它,并且您将识别它们。

答案 3 :(得分:0)

一般要注意,PST文件可能会在网络驱动程序或服务器上受到攻击。 MVP和微软也接受了这个事实。因此,它只能在本地驱动器上使用,以避免出现任何问题。