2015-06-09 6 views
1

У меня есть папка на моем рабочем столе, которая содержит пять подпапок, каждая из этих подпапок содержит около 1000 файлов Pdf. Все из них имеют 6-значное имя (например, 567788.pdf).Пакетный файл, перемещение и переименование

Я хотел бы скопировать все файлы в другую папку и, если они имеют то же имя, вместо того, чтобы переписывать файл, я хотел бы, чтобы он добавил что-то к имени, если это дубликат.

567788.pdf например -> 567788 (1) .pdf

Может ли это быть сделано с помощью пакетного файла?

+2

Да, это возможно. Вы должны прокручивать исходный каталог с помощью команды 'FOR'. Проверьте существование с помощью 'IF EXIST'. Добавьте '(1)' суффикс, чтобы избежать столкновений (используйте 'SET /?', Чтобы узнать о подстановке параметров). Сообщество * Stack Overflow * не должно писать такие скрипты для вас. Попробуйте сами и сообщите вопросы, как только вы столкнетесь с камнями преткновения. –

+0

http://www.reddit.com/r/Batch/comments/394y1w/requestmove_and_rename/ –

ответ

0

базы подписки, попробуйте следующее:

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) и т.д.

Смежные вопросы