it-swarm.com.ru

Переименовать несколько файлов в cmd

Если у меня есть несколько файлов в каталоге и я хочу добавить что-то к их именам файлов, но не к расширению, как мне это сделать?

Я пробовал следующее, с тестовыми файлами file1.txt и file2.txt:

ren *.txt *1.1.txt

Это переименовывает файлы в file1.1.txt и file2.txt1.1.txt

Я хочу, чтобы файлы были file1 1.1.txt и file2 1.1.txt

Будет ли это возможно из cmd или мне нужен файл bat для этого? Как насчет PowerShell?

22
Morne
for /f "delims=" %%i in ('dir /b /a-d *.txt') do ren "%%~i" "%%~ni 1.1%%~xi"

Если вы используете простой цикл for без параметра /f, уже переименованные файлы будут снова переименованы.

16
Endoro

Убедитесь, что ? больше, чем символов в самом длинном имени:

ren *.txt "???????????????????????????? 1.1.txt"

Смотрите Как команда Windows RENAME интерпретирует подстановочные знаки? для получения дополнительной информации.

Новое решение - 2014/12/01

Для тех, кто любит регулярные выражения, есть JREN.BAT - гибридная утилита командной строки JScript/batch, которая будет работать в любой версии Windows начиная с XP.

jren "^.*(?=\.)" "$& 1.1" /fm "*.txt"

или же

jren "^(.*)(\.txt)$" "$1 1.1$2" /i
19
dbenham

Шаг 1:

Выбрать все файлы (ctrl + A)

Шаг 2 :

Затем выберите опцию переименования

 enter image description here

Шаг 3: 

Выберите ваше имя файла ... например: myfile

оно автоматически переименовывается в myfile (01), myfile (02) , .....

Если вы хотите заменить пробелы и скобки .. продолжить шаг 4

Шаг 4:

Откройте Windows Powershell из текущей папки

 enter image description here

Шаг 5:

Для замены пустого места, чтобы подчеркнуть (_)

 dir | rename-item -NewName {$_.name -replace [Regex]::Escape(" "),"_"}

Шаг 6:

Для замены открытого кронштейна

 dir | rename-item -NewName {$_.name -replace [Regex]::Escape("("),""}

Для замены закрыть скобу

 dir | rename-item -NewName {$_.name -replace [Regex]::Escape(")"),""}
13
Ranjith Kumar

Команда ниже сделает эту работу.

forfiles /M *.txt /C "cmd /c rename @file \"@fname 1.1.txt\""

источник: Переименовать расширения файлов навалом

10
Giri
@echo off
for %%f in (*.txt) do (
    ren "%%~nf%%~xf" "%%~nf 1.1%%~xf"
)
3
Eugene

Попробуйте Bulk Rename Utility . Это хорошо работает. Может быть, не изобретать велосипед. Если вам не нужен сценарий, это хороший способ.

2
Panama Jack

Я попытался вставить команду Эндоро (спасибо Endoro) непосредственно в командную строку, чтобы добавить префикс к файлам, но обнаружил ошибку. Решение было уменьшить %% до%, поэтому:

for /f "delims=" %i in ('dir /b /a-d *.*') do ren "%~i" "Service.Enviro.%~ni%~xi"
1
MJA

Это работает для вашего конкретного случая: 

ren file?.txt "file? 1.1.txt" 
0
jfajunior

Я также был озадачен этим ... не понравились круглые скобки, которые вставляет windows при массовом переименовании. В своем исследовании я решил написать скрипт с PowerShell вместо этого. Супер просто и работает как шарм. Теперь я могу использовать его всякий раз, когда мне нужно переименовать файл процесса ... что часто. Я делаю сотни фотографий, и камера называет их IMG1234.JPG и т.д.

Вот сценарий, который я написал:

# filename: bulk_file_rename.ps1
# by: subcan
# PowerShell script to rename multiple files within a folder to a 
# name that increments without (#)
# create counter
$int = 1
# ask user for what they want
$regex = Read-Host "Regex for files you are looking for? ex. IMG*.JPG "
$file_name = Read-Host "What is new file name, without extension? ex. New Image "
$extension = Read-Host "What extension do you want? ex. .JPG "
# get a total count of the files that meet regex
$total = Get-ChildItem -Filter $regex | measure
# while loop to rename all files with new name
while ($int -le $total.Count)
{
    # diplay where in loop you are
    Write-Host "within while loop" $int  
    # create variable for concatinated new name - 
    # $int.ToString(000) ensures 3 digit number 001, 010, etc
    $new_name = $file_name + $int.ToString(000)+$extension
    # get the first occurance and rename
    Get-ChildItem -Filter $regex | select -First 1 | Rename-Item -NewName $new_name
    # display renamed file name
    Write-Host "Renamed to" $new_name
    # increment counter
    $int++
}

Я надеюсь, что это полезно для кого-то там.

subcan

0
subcan