【问题标题】:Batch File, Move and Rename批处理文件、移动和重命名
【发布时间】:2015-06-09 10:26:35
【问题描述】:

我的桌面上有一个文件夹,其中包含五个子文件夹,每个子文件夹包含大约 1000 个 Pdf 文件。所有这些都有一个 6 位数的名称(例如 567788.pdf)。

我想将所有文件复制到另一个文件夹,如果它们具有相同的名称,而不是覆盖文件,我希望它在名称中添加一些内容(如果它是重复的)。

例如 567788.pdf -> 567788 (1).pdf

这可以使用批处理文件来完成吗?

【问题讨论】:

  • 是的,这是可行的。您应该使用FOR 命令遍历您的源目录。使用IF EXIST 检查是否存在。添加(1) 后缀以避免冲突(使用SET /? 了解参数替换)。 Stack Overflow 社区不应该为您编写此类脚本。一旦遇到绊脚石,请自行尝试并报告问题。

标签: batch-file command-line cmd


【解决方案1】:

例如,试试这个:

find old_dir -type f |while read f ; do old_name=`basename $f`; if [ ! -e new_dir/$old_name ] ; then cp $f new_dir ; else i=1 ; while true ; do new_name="$old_name ($i)" ; if [ ! -e new_dir/$new_name ] ; then cp $f new_dir/$new_name ; break ; else i=`expr $i + 1` fi; done; fi; done

重复的文件名将收到后缀 (1)、(2) 等。

【讨论】: