批量替换多个子文件夹中的多个文件

时间:2015-03-23 23:55:51

标签: batch-file

我刚刚加入了stackoverflow,因为你的人很棒。所以我现在已经批量编写了一年,是的,我知道这和“Gone with the Wind”一样古老,但我别无选择。

我的 BATCH 问题就是这个问题。我需要将c:\ folder1 \ *.bat与E:\ Folder4 \ *.bat进行比较,并仅返回匹配的“.bat”文件。我可以使用此代码轻松实现此目标....

for / R c:\ folder1 \ %% i in( .bat)如果存在“E:\ Folder4 \ %% ~nxi”(echo %% ~ni)

然后我可以按照我喜欢的方式继续做,其中大部分是备份和替换。但是,我只是遇到了一些有趣的事情。我现在需要执行相同的操作,但是如此:

将c:\ folder1 * .bat中的文件与

进行比较
  

E:\ Folder4 \ subfolder1 \ * .bat
  E:\ Folder4 \ subfolder2 \ * .bat
  E:\ Folder4 \ subfolder3 \ * .bat
  E:\ Folder4 \ subfolder4 \ * .bat
  E:\ Folder4 \ subfolder5 \ * .bat
  E:\ Folder4 \ subfolder6 \ * .bat

等等。

我的 BATCH 问题是如何比较c:\ folder1 * .bat中的内容,看看它是否也在每个E:\ Folder4 \子文件夹中?一旦完成,我还需要用来自c:\ folder1 * .bat的匹配文件替换E:\ Folder4 \ subfolder中的内容。我已经用其他语言完成了这项工作但不知道如何使用批次

由于

1 个答案:

答案 0 :(得分:0)

如果我正确理解你的问题,那么这样的事情可能有用:

for %%i in (
     "D:\Folder4\subfolder1\*.bat"
     "D:\Folder4\subfolder2\*.bat"
     "D:\Folder4\subfolder3\*.bat"
     "D:\Folder4\subfolder4\*.bat"
     "D:\Folder4\subfolder5\*.bat"
     "D:\Folder4\subfolder6\*.bat"
    ) do XCOPY /U /Y "C:\folder1\*.bat" "%%i"

基本上XCOPY命令有我认为你需要的选项。

修改

我的理解在增长:P ......这可能更符合您的要求:

@echo off
for /r D:\Folder4\ %%i in (*.bat) do (
for /r C:\folder\ %%j in (*.bat) do (
if %%~ni == %%~nj XCOPY /U /Y "%%j" "%%i"
)
)
pause