当前位置: 首页 > 知识库问答 >
问题:

如何将基于列表的文件复制到相应的文件夹中,这些文件夹也是基于列表创建的?

孔冥夜
2023-03-14

所以,我对脚本和批处理文件完全陌生。

我想根据要复制的文件列表复制文件。我有一个文本文件的文件列表复制,我希望脚本复制所有这些文件逐行从一个源目录。

例如,我有1000多个文件要复制,每个文件夹有3个文件要创建并放入。以下是文件名的格式示例:

file3_AB12_autoc.pdf
file3_AB12.jpeg
file1_AB12.png

file3_CD34_autoc.pdf
file3_CD34.jpeg
file1_CD34.png

...etc...

一旦这些被复制,我想将它们移动到我使用文本文件和命令创建的文件夹中:

FOR /F %i in (folders_list.txt) do md %i

现在,通过我的脚本,我想将它复制的文件移动到相应的文件夹中。基本上,如果文件名包含文件夹名,那么它们应该移动到文件夹中。例如:

C:\AB12                          THIS FOLDER SHOULD HAVE ALL THE FOLLOWING FILES
     file3_AB12.jpeg
     file3_AB12_autoc.pdf
     file1_AB12.png

C:\CD34                          THIS FOLDER SHOULD HAVE ALL THE FOLLOWING FILES
     file3_CD34.jpeg
     file3_CD34_autoc.pdf
     file1_CD34.png

我查过其他类似的问题,但似乎没有什么对我想做的事情起作用。我相信下面的链接是有用的,但我不知道如何把它们放在一起。

如何根据包含文件夹名称的文件将文件复制到文件夹中?

根据.txt文件存储的列表复制文件

共有1个答案

长孙沈义
2023-03-14

在PowerShell中,移动项将移动文件。然后,您只需要正则表达式来确定路径和新文件名,类似于:

$txt = "file3_AB12_autoc.pdf
file3_AB12.jpeg
file1_AB12.png
file3_CD34_autoc.pdf
file3_CD34.jpeg
file1_CD34.png
badfilename.txt"

foreach ($orig_file in $txt -split '\r\n') {

    if ( $orig_file -match '^([^_]*)_([^_.]*)(.*)\.(.*)$' ) {
        $dir = $matches[2]
        $new_file = '{0}{1}.{2}' -f $matches[1], $matches[3], $matches[4]

        'Moving {0} to {1}\{2}' -f $orig_file, $dir, $new_file

        Move-Item -Path $orig_file -Destination ('{0}\{1}' -f $dir, $new_file)

    }
    else {
        '{0} not processed' -f $orig_file        
    }

}
 类似资料:
  • 我有以下清单: 是否有一种快速/直接的方法将上述列表拆分为以下子列表: 在我看来,我将把条件看作是父文件夹和文件名的一部分。但是,我希望避免使用循环。 谢谢

  • 将名为“file.png”的文件复制到文件夹列表中的多个文件夹时出现问题。(使用Windows cmd/.bat)。 例如: 源/file.png 目的地/folder1 目的地/folder2 目的地/folder3 目的地/folder4 目的地/folder5 等... 要复制文件的文件夹列表。png: 文件夹列表。txt: 文件夹2 文件夹4 文件夹5 仅使用cmd(.bat)将源/文件。

  • 我有一个带有子目录的目录,其中包含各种大小的文件。我想复制一个特定的文件,并立即用所有文件替换它。 例如我有:C:\Folder\Sub_Folder\file1.extC:\Folder\Sub_Folder\file2.ext 我想制作“random_file.ext”的副本,然后将所有副本替换为上面提到的具有原始名称的文件file1.extfile2.ext这样random_file.ext

  • 我有一个包含10个图像的文件夹,我希望根据其当前文件名将其移动到一个新文件夹中。我已经成功地将文件夹中的每个图像移动到了一个新文件夹中,到目前为止,我已经成功地将每个图像文件名移动到了它自己的文件夹中,但我还没有弄清楚如何将具有相同文件名的所有图像移动到一个文件夹中,然后将另一个移动到另一个文件夹中。例如,下面我想相应地移动图像。 1600_01.jpg--- 到目前为止,这是我的代码,通过根据图

  • 我正在寻找一种方法来获取zip文件中的文件列表。我创建了一个方法来获取目录中的文件列表,但我也在寻找一种方法来获取zip文件中的文件,而不是只显示zip文件。 以下是我的方法:

  • 问题内容: 我刚接触Linux(在这种情况下为CentOS)。我有一个包含约2000个文件的文件夹。我想理想地在命令提示符处执行一个命令,该命令会将所有文件的名称写到单个txt文件中。 如果必须的话,我也可以编写一个实际的程序来做到这一点,我只是想也许可以从命令提示符处简单地做到这一点。 问题答案: 你可以用 (通常,使用“ Terminal”,“ shell”或“ Bash”启动外壳程序。)您可