DOS命令将子目录中的所有文件移动一级,而不覆盖相同的文件名,唯一大小

时间:2011-12-29 18:20:16

标签: batch-file windows-xp move

我的问题:

我和Rishi的情况相同。我有同一位艺术家出现在不同CD上的同一首歌的多个版本。如果我使用批处理命令写入,DOS是否会覆盖具有相同名称的歌曲,即使每个唯一文件的文件大小不同?

上一个问题:DOS命令将子目录中的所有文件向上移动

参考Rishi在1月15日问了这个问题:

“我有一个包含很多子文件夹的文件夹,每个子文件夹中都有一个或多个文件。我正在尝试编写一个批处理文件,将所有这些文件移动到C:\ songs(例如)。

C:> FOR / R C:\ Test%i IN(*)DO MOVE%i C:\ Songs 文件夹测试和歌曲存在,但我收到错误说

%我此时出乎意料。 我做错了什么?“

答案

“FOR / R%i IN(C:\ Test *)DO MOVE”%i“C:\ Songs 在批处理文件中,它必须是%% i。奇怪的批次怪癖。“

1 个答案:

答案 0 :(得分:0)

在给定文件夹中,只能有一个具有给定名称的文件版本。在批处理中执行时,MOVE命令将自动覆盖任何同名的预先存在的文件。因此,您的问题的答案是 - 是的,即使文件大小不同,也会覆盖具有相同名称的文件。 (注意 - 如果您使用的是Windows XP,那么您不使用DOS)

您可以通过使用-y选项将N管道传输到MOVE来防止批量移动覆盖现有文件:

echo n | move /-y "%%~i" "C:\songs\" 

如果要将两个版本复制并保存到同一文件夹中,则必须至少重命名一个版本。在开始提出解决方案之前,您必须决定要使用哪种命名方案。