Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For loop 将Windows批处理文件复制到c:\*.pst,并将其复制到网络驱动器,而不使用重复名称的文件相互覆盖_For Loop_Batch File_Duplicates_Xcopy - Fatal编程技术网

For loop 将Windows批处理文件复制到c:\*.pst,并将其复制到网络驱动器,而不使用重复名称的文件相互覆盖

For loop 将Windows批处理文件复制到c:\*.pst,并将其复制到网络驱动器,而不使用重复名称的文件相互覆盖,for-loop,batch-file,duplicates,xcopy,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

我的最终用户将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上创建它们的目录结构,这样同名的文件就不会相互覆盖。但我失败了

有什么想法吗?谢谢你帮我做这件事

XCopy /-U c:\*.pst m:\migration\pst
/U选项将仅复制已存在的文件。/-U应该只复制那些不存在的


来源:

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


使用
dir/b c:\*.pst/s>m:\migration\pathdata.txt,您应该观察到一些情况
如果打开pathdata.txt或do
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
时,您将多次复制同一文件

您可以检查解决问题的方法,然后执行
robocopy
回答或根据需要修改


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

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

这也很好,但默认情况下它不会安装在运行windows XP或更旧版本的系统上,但只要它能工作:Drobocopy c:\m:\pst*.pst/r:/s我很幸运地尝试了一下。我不知道robocopy是Windows7或Windows2003资源包的一部分。谢谢Joe DF!!!!我仍然可以使用这个建议。你太棒了!!!
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