如何让命令提示符按名称顺序合并我的文件?

如何让命令提示符按名称顺序合并我的文件?

我正在使用命令提示符中的复制命令来合并目录中的多个目录的所有文件。

问题是,我需要在合并之前编辑每个目录中的第一个文件。这意味着当我输入命令“copy /b *.mp3 name.mp3”时,合并的文件在开头有第 2 部分,在结尾有第 1 部分,大概是因为它是最后创建的。

有没有办法使用复制命令以便文件按名称顺序合并?每个文件夹都有不同数量的部分,从 2 到 1000 不等,所以我不想在每个文件之间都列出“+”。

理想情况下,我想找到一些内容插入到我正在使用的复制命令中。否则,有没有办法重新排列文件夹中的文件,以便如果您输入“DIR”,即使最后编辑了第 1 部分,它也会首先显示?

答案1

有多种方法可以编写一个批处理文件来迭代执行此操作,但其中一个(众多)简单的解决方案是通过管道将目录命令的输出传输到文本文件,创建一个批处理文件以将传递的单个项目复制到所需的文件命令行,然后打开文本文件并粘贴在每行开头调用批处理文件的命令。

dir /b *.mp3 > 文件列表.txt

或者

dir /b /s *.mp3 > 文件列表.txt

/b 表示简要输出,仅文件名;/s 也表示子目录;“>”表示“将输出发送到”

要复制的批处理文件名为copymp3.bat:

复制 /b 名称.mp3 + /b %1 名称.mp3

%1 表示“使用传递的第一个命令行参数”。

按照您喜欢的方式对列表进行排序,然后编辑 filelist.txt ,使每一行如下所示:

调用 copymp3.bat “列表中第一个文件的名称.mp3”

“call”命令表示运行批处理文件并等待执行完成后再继续执行下一个命令。每个文件名都需要用引号引起来,因为空格会表示多个参数,而不是一个参数。在开头添加命令之前,请对 .mp3 进行“查找和替换”,并将其替换为 .mp3”

将 filelist.txt 文件重命名为 filelist.bat,然后双击它就会执行。

谷歌“批处理文件 cmd 文件”以获取更多信息。

如果您有数千个文件,则构建批处理文件将需要一段时间。可以识别行尾的查找和替换编辑器将非常有用。

首先在一小部分子集上进行测试

答案2

最简单的方法是使用临时目录。

  1. 创建临时目录(一般是目标文件所在目录中的子目录比较好)
  2. 在资源管理器中,单击姓名按名称对文件进行排序的列
  3. 选择所有需要的文件
  4. 将选定的文件移动到临时目录(即剪切粘贴或使用其他移动命令)

如果你在临时目录中执行,dir你会看到目錄頁次序按字母顺序排列(即dir== dir /on),因为这是 Explorer 移动它们的顺序。您可以执行相同的操作来强制目录顺序按日期、大小或 Explorer 具有的任何其他列排序。此时,您可以在临时目录中执行操作,然后将它们移回,或者直接删除旧目录(如果临时目录位于旧目录中,请小心),重命名临时目录并将其移动到旧目录所在的位置。

但需要注意的是,您不能简单地对文件进行排序并将其移入和移出同一个或两个目录,因为文件的旧目录条目可能会被重复使用,导致目录似乎“记住”了旧顺序,而不管您后来如何对它们进行排序。这就是为什么您需要创建一个新的使用临时目录,因为其中尚无条目(即,没有已删除的文件)。

相关内容