Я нахожусь в процессе переименования нескольких файлов из _2. к. Я хочу удалить суффикс "_2"
Мой первый обходной путь пытается
ren *_2.* *.*
но это не работает. Помощь оказана.
Я нахожусь в процессе переименования нескольких файлов из _2. к. Я хочу удалить суффикс "_2"
Мой первый обходной путь пытается
ren *_2.* *.*
но это не работает. Помощь оказана.
Вы можете использовать этот пакетный скрипт:
@echo off
setlocal enabledelayedexpansion
for /r %%G in (*_2.*) do (
set new=%%~nG
set new=!new:~0,-2!
ren "%%~G" "!new!%%~xG"
)
*_2.*
_2
из каждого имени файла (%%~nG
), удалив последние 2 символа.%%~xG
) к новому имени.__2.bin --> _.bin
abc_def_2.txt --> abc_def.txt
2014_02_23_2.log --> 2014_02_23.log
Вы можете попробовать это как маленький .cmd:
@echo off
setlocal enabledelayedexpansion
for %%a in (*_2.*) do (
set fnm=%%a
echo ren !fnm! !fnm:_2.=.!
)
который, кажется, делает то, что вы ожидаете (уберите эхо-сигнал, если выполняется тестовый прогон)
Я просто вижу возможную проблему, если у вас есть несколько _2.
в имени файла
РЕДАКТИРОВАТЬ : заменил неполное предложение в соответствии с предложением
Вот как вы можете сделать это в PowerShell (это одна строка, поэтому обязательно прокрутите вправо):
gci PATH\TO\YOUR\FOLDER\ | ? {!$_.PSIsContainer -and $_.BaseName.EndsWith("_2")} | ren -NewName {("{0}{1}" -f $_.BaseName.Substring(0, $_.BaseName.Length-2), $_.Extension)}
gci - это псевдоним Get-ChildItem - введите путь к вашей папке здесь. Если у вас есть подпапки, добавьте -Recurse после пути
? это псевдоним Where-Object - здесь мы перебираем элементы и проверяем, что это НЕ папка, а ее имя оканчивается на "_2" (исключая расширение файла).
ren - Rename-Item - наконец, мы переименовываем файлы, которые прошли фильтр Where-Object. Используя Substring, мы просто обрезаем два последних символа имени файла.
Это должно быть сделано в предположении, что шаблоны действительно _2.*
не _2*.*
(Ничего после цифры 2), и в названии есть только одно подчеркивание, как правильно указывал and31415 - так как он удалит все из _
(подчеркивание) до расширения
for %i in (*_2.*) do (@for /f "delims=_ tokens=1" %j in ("%~ni") do @echo ren "%i" "%j%~xi")
Пожалуйста, обратите внимание:
- это одна строка, так как запускается прямо из командной строки
- теперь только выводит (выводит) команду ren на консоль. После того, как вы убедились , что он будет работать правильно, удалите @echo
чтобы он действительно переименовал файлы.
Вот одна строка для выполнения этого с помощью Take Command от JP Software, интерпретатора команд, чья команда REN
поддерживает регулярные выражения:
ren ::(.*)_2\.(.*) ::\1.\2
Я не знаю действительно быстрого и грязного способа сделать это.
Но как насчет передачи пустого списка каталогов в файл TXT. Загрузите файл в электронную таблицу и создайте формулы для создания команд переименования. Затем вы можете скопировать команды переименования в качестве значений и вставить их в пакетный файл, который можно запустить для переименования.