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

Posted

技术标签:

【中文标题】DOS命令将子目录中的所有文件向上移动一级而不覆盖相同的文件名,唯一的大小【英文标题】:DOS command to move all files in subdirectories one level up without overwriting same file name, unique size 【发布时间】:2012-01-30 02:20:47 【问题描述】:

我的问题:

我和Rishi的情况一样。我有多个版本的同一位艺术家的同一首歌曲出现在不同的 CD 上。如果我按照编写的方式使用批处理命令,即使每个唯一文件的文件大小不同,DOS 会覆盖同名歌曲吗?

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

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

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

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

%i 在此时出乎意料。 我做错了什么?”

答案是

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

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

以上是关于DOS命令将子目录中的所有文件向上移动一级而不覆盖相同的文件名,唯一的大小的主要内容,如果未能解决你的问题,请参考以下文章

复制文件而不覆盖

linux 把当前目录的一个子目录里的文件移动到另一个子目录里用啥命令

linux怎样将文件覆盖到另一个文件

Linux常用文件操作命令

命令行 返回上一级目录怎么操作

常用dos命令