保留原始结构,批量查找和复制文件

时间:2013-06-24 14:40:23

标签: for-loop batch-file window cmd findstr

我需要在我的“C”驱动器上找到所有* .PST文件,并将所有实例复制到C:\

上的新文件夹

如何在dos-batch中执行此操作并保留原始结构?我不想覆盖第一个第二个实例..

  • 我认为这应该有效,但是我需要保留原始子目录或将每次点击带到一个唯一的子目录?!
  • 我必须从搜索中排除c:\ backuppst目录吗?

    for / f“delims =”%% i in('dir / s / b / ad * .PST')do copy / b“%% ~i”“C:\ backuppst”

谢谢大师

编辑:

如你所知,我使用Xcopy:

Xcopy c:*。pst c:\ backuppst / i / h / s / y /Exclude:my.txt

在my.txt中我有:C:\ backuppst

但我得到“不能预先形成骑行副本”

Foxidrive的最终解决方案

@echo off for / f“delims =”%% i in('dir / s / b / a-d * .PST')xcopy“%% ~i”“c:\ backuppst %% ~pi” 暂停

3 个答案:

答案 0 :(得分:2)

试试这个:

for /f "delims=" %%i in ('dir /s /b /a-d c:\*.PST^|findstr /ivc:"C:\backuppst"') do copy /b "%%~fi" "C:\backuppst"

答案 1 :(得分:0)

使用xcopy命令,它可以一次完成,无需for

它支持参数/exclude,它允许您排除特定文件或文件夹,例如备份目录。

答案 2 :(得分:0)

如果在c:\ backuppst下没有PST文件,这应该适合你。

@echo off
for /f "delims=" %%i in ('dir /s /b /a-d \*.PST') do xcopy "%%~i" "c:\backuppst%%~pi"
pause