批处理脚本以查找文件所在的目录,将位于该目录中的所有文件和子目录复制到另一个目录

时间:2013-05-15 16:31:17

标签: batch-file copy inf

因此,如果我C:\drivers\*带*表示许多子文件夹,我想找出我的inf文件所在的位置,然后复制位于我的inf文件所在的同一目录中的所有文件和所有子目录。

很容易创建一个脚本来复制找到我目录的所有.inf文件:

FOR /R C:\drivers\ %%a in (*.inf *.cat *.sys) do xcopy /c /h /y %%a C:\test

但是复制位于同一目录和所有子目录中的其他文件一直很困难。

例如,如果inf文件位于C:\ drivers \ sbdrv \ hseries \ usb30 \ amdhub \ w7下并且sys文件位于x86的子文件夹中,我需要将sys文件保存在相同的子文件夹,但在C:\ test \ x86的目的地下。

有什么想法吗?

编辑:也许这会让事情变得更容易。一旦在文件夹中找到一个.inf文件,它就应该将整个文件夹复制到test以及所有子文件夹,然后转到下一个文件夹。因此,如果它看到位于C:\ drivers \ sb3045 \ sb407.inf的第一个.inf文件,它应该复制sb3045下的所有文件和文件夹,而不复制文件夹sb3045本身,然后转到文件夹C:\ drivers \ sb4055 \ drivers \ oem \ intel \ id6077.inf并复制intel文件夹下的所有文件和文件夹,而不复制intel文件夹本身。

EDIT2: 看起来这样可行,但它很慢,因为它找到每个.inf并且正在复制任何旧文件,如果每个文件夹有多个.inf文件

@ECHO ON

SETLOCAL ENABLEDELAYEDEXPANSION

CD \

CD驱动程序

FOR / f“tokens = * delims =”%% B IN('DIR / b / s / o:gen .inf')DO(     XCOPY“%% ~dpB 。*”“C:\ test \”/ e / c / h / y

如果有人有更干净或更快的想法,请告诉我。在那之前,我将不得不使用这个。

2 个答案:

答案 0 :(得分:0)

试试这个:

 FOR /R C:\drivers\ %%a in (*.inf *.cat *.sys) do xcopy /c /h /y "%%~dpa*" C:\test

答案 1 :(得分:0)

for /R C:\WINDOWS\inf %%a in (*.inf*) do (
xcopy /qv /T  %%a .\test\
xcopy /qv  %%a .\test\
)
pause

这段代码对我有用。