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