17

У меня есть список файлов в формате слева. Я хочу добавить строку к каждому имени файла, но перед расширением, как показано:

File 1.txt  ->  File 1 version 1.txt
File 2.txt  ->  File 2 version 1.txt
File 3.txt  ->  File 3 version 1.txt
File 4.txt  ->  File 4 version 1.txt
...

В каждом случае добавленная строка одинакова для всех файлов.

Это кажется такой простой задачей, но у меня возникли проблемы с переносом этого в командный файл.

Я попробовал команду ren и следовал некоторым примерам на этой странице, но в именах полученных файлов добавляется строка после расширения:

File 1.txt version 1.txt

6 ответов6

37

Вместо того , чтобы полагаться на недокументированных причуды REN «ы, почему бы не сделать это правильный путь?

for %a in (*.txt) do ren "%~a" "%~na version 1%~xa"

Если вы хотите использовать это в пакетном файле, просто не забудьте удвоить каждый знак%.

6

для более длинных имен файлов вам придется добавить еще ? в блоке с массой ?????????

ren *.?* ????????????????????????????????????????????????????????" version 1".*
2

Для тех, кто не имеет опыта работы с командами (например, я), есть пара программ, которые делают массовое переименование очень простым:

  • Утилита массового переименования (без открытого исходного кода)
  • Переименовать-It! (Открытый исходный код)
2

Я хотел добавить "_A" к нескольким файлам, и вот как я это сделал.

Сначала я удалил расширение, добавил суффикс, затем изменил расширение обратно на оригинальное. Это, конечно, сработало для меня и сохранило простой пакетный код, так как я не очень программист.

@ECHO OFF

REN *.pdf *.
REN *. *_A.
REN *. *.pdf
1

Решение @ bwDraco было хорошим, но его можно было бы упростить. Все мои файлы были * .jpg, и я хотел переименовать их все * c.jpg. Для этого вам нужно всего 2 шага, а не 3:

ren "{filepath}\*.jpg" *.
ren "{filepath}\*" *c.jpg
0

Рекурсивно через подпапки

#!/bin/bash
# Warning: globstar excludes hidden directories.
# Turn on recursive globbing (in this script) or exit if the option is not supported:
shopt -s globstar || exit
for f in **
do
if [ -f "$f" ]; then
   extn=${f##*.} # save the extension of the file
   #mv "$f" "${f%.*}"_suffix.${extn};
   mv "$f" "${f%.*} version 1".${extn};
fi
done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .