替换多个文件夹中的文件,其名称包含目标文件夹名称

问题描述 投票:0回答:1

我对命令行的经验很少,我正在尝试做一些非常复杂的事情(对我来说)。

我有一个目录,其中包含很多子文件夹和文件。所有文件名都包含父文件夹名称,例如:

Folder1  
  data_Folder1.csv 
  other_file_Folder1.csv 
Folder2
  data_Folder2.csv  
  other_file_Folder2.csv  

在另一个文件夹(全部在一个目录中)中,我有所有

data_FolderX.csv
文件的新版本,我需要在原始文件夹中替换它们。由于后来的分析,我无法给它们起另一个名字。有没有办法在命令行中用新版本替换原始文件夹中的文件?

我尝试过这个将文件替换到多个文件夹/子目录中但对我不起作用。鉴于我的目录中有很多 .csv 文件,我不想全部替换它们,所以我认为我不应该根据文件扩展名来执行此操作。我还想指出,名称“FolderX”包含其他几个

_
,所以原则上,我想替换
.csv
中以
data
开头的
FolderX
文件。

有人可以帮忙吗? 预先感谢!

windows command-line
1个回答
0
投票

您可以使用 Windows REPLACE 命令。 将一个文件替换为另一个文件(两者具有相同的文件名)。

在所有子目录 (/S ) 中替换时,源中的文件将与每个子文件夹进行匹配,这不是镜像,每个文件夹中的文件将单独匹配。 (/S) 子目录选项不能与添加文件 (/A) 或限制更新旧版本 (/U) 结合使用。 REPLACE 将列出所有被替换的文件。默认情况下,仅替换目标中已存在的文件。 您不能使用 REPLACE 更新任何具有隐藏或系统属性集的文件。 目标文件夹的路径不得包含尾部反斜杠。

示例

语法:

replace C:\SourceFile.rtf  C:\Some_Folder_Which_Contains_SubFolders  /s /r /u

命令:

replace "D:\Downloads\newfile\testfile.rtf" "D:\Downloads\destinationfolder" /s /r /u

输出:

Replacing D:\Downloads\destinationfolder\testfile.rtf
Replacing D:\Downloads\destinationfolder\testfolder\testfile.rtf
Replacing D:\Downloads\destinationfolder\testfolder\folder2\testfile.rtf
Replacing D:\Downloads\destinationfolder\testfolder\folder2\folder4\testfile.rtf
Replacing D:\Downloads\destinationfolder\testfolder\folder2\folder4\folder5\testfile.rtf
Replacing D:\Downloads\destinationfolder\testfolder\folder3\testfile.rtf
© www.soinside.com 2019 - 2024. All rights reserved.