Сценарий переименования перезаписывает часть имени файла, а не добавляет его
Это кажется мне очень простым, и я уверен, что так будет и с большинством из вас, но я не могу понять, почему это происходит.
Все, что я пытаюсь сделать, это использовать эту маленькую строчку в скрипте, чтобы найти файлы.png в определенной папке (представленной переменной%folder2%) и PRE-pend их с помощью "DONE-". Он делает это, НО, он перезаписывает первые пять символов имени файла тем, с чем я хочу, чтобы он был добавлен (DONE-). Вот строка кода:
для %%a in (PNG) сделать (переименовать "%folder2%*.%%a" "DONE-*.%%a")
Я надеюсь, что некоторые из вас могут пролить свет на это.
1 ответ
Невозможно делать то, что вы хотите, используя только RENAME
команда - в ней просто нет механизма добавления значения к существующему имени при использовании подстановочных знаков. Любые символы в вашем целевом имени заменят символы в имени источника, вплоть до первого .
,
Я не могу винить вас за то, что вы не понимаете, потому что документация Windows ужасна для этой команды. Я никогда не видел ничего написанного где-нибудь, что описывает правила. Вот почему я исследовал и написал Как команда Windows RENAME интерпретирует подстановочные знаки?,
Пакетное решение для добавления текста к существующему имени заключается в использовании цикла FOR для переименования каждого файла в отдельности. Что-то вроде следующего должно работать для вас.
for %%F in ("%folder2%*.PNG") do rename "%%F" "DONE-%%~F"
Другой вариант - использовать стороннюю утилиту, более мощную, чем нативная. RENAME
команда. Если вас устраивают регулярные выражения, то одна из опций - моя утилита переименования JREN.BAT. Это чистый сценарий (гибридный JScript/batch), который изначально запускается на любой машине с Windows начиная с XP - сторонний exe-файл не требуется. Если у вас есть копия, справка доступна из командной строки через jren /?
, или же jren /??
за постраничную помощь.
С JREN.BAT решение так же просто, как jren "^" "DONE-" /p "%folder2%" /fm *.png
, Если вы поместите команду в пакетный скрипт, вам нужно использовать call jren
так что он вернется к вашему сценарию.