Перейменуйте декілька файлів у cmd

Якщо у мене є декілька файлів у каталозі та хочете додати щось до їхніх імен файлів, а не до розширення, як я буду це робити?

Я спробував виконати наступні дії з тестовими файлами file1.txt та file2.txt :

ren *.txt *1.1.txt

This renames the files to file1.1.txt and file2.txt1.1.txt

I want the files to be file1 1.1.txt and file2 1.1.txt

Чи це можливо з cmd, чи мені потрібно мати файл Bat для цього? А як щодо PowerShell?

22
@Морне, Ви також можете використовувати такий інструмент, як Massive File Renamer superuser.com/a/730292/78897
додано Автор Pacerier, джерело
@Морне, Ви також можете використовувати такий інструмент, як Massive File Renamer superuser.com/a/730292/78897
додано Автор Pacerier, джерело
чи є багато файлів?
додано Автор Panama Jack, джерело
чи є багато файлів?
додано Автор Panama Jack, джерело
Є близько 90 в папці
додано Автор Morne, джерело
Є близько 90 в папці
додано Автор Morne, джерело
Ви також можете це зробити за допомогою просто інтерфейсу, якщо хочете. Виділіть всі файли, перейменуйте його на "файл", і він буде відображатися як файл (1), файл (2), файл (3), файл (4) тощо.
додано Автор Gray, джерело
Ви також можете це зробити за допомогою просто інтерфейсу, якщо хочете. Виділіть всі файли, перейменуйте його на "файл", і він буде відображатися як файл (1), файл (2), файл (3), файл (4) тощо.
додано Автор Gray, джерело

23 Відповіді

Переконайтеся, що є більше ? , ніж є символи найдовшого імені:

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

Див. Як команда Windows RENAME інтерпретує підстановки? для отримання додаткової інформації.

Нове рішення - 12.12.2014

Fабо those who like regular expressions, there is JREN.BAT - a hybrid JScript/batch command line utility that will run on any version of Windows from XP fабоward.

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

або

jren "^(.*)(\.txt)$" "$1 1.1$2" /i
19
додано
@Armfoot - Так - JREN використовує стандартний регулярний вираз JSCRIPT, тому підтримуються класи стилів зі скороченнями. Ви можете прочитати документацію Microsoft Regex синтаксису .
додано Автор dbenham, джерело
Максимальна довжина імені файлу - 255 символів. Але практична межа для більшості сценаріїв менша, оскільки максимальний загальний шлях, підтримуваний інтерфейсом Windows, становить 259 символів. Загальна довжина шляху включає інформацію про об'єми, папки та файлу, а також нульовий термінатор. Див. msdn.microsoft.com/en-us/library/aa365247.aspx для отримання додаткової інформації.
додано Автор dbenham, джерело
Дякую за те, що ввів дрєн, саме те, що мені було потрібно, просто коротке і швидке. До речі, за допомогою цього можна скористатись класами стовпців зі стилем , як-от \ d або \ w .
додано Автор Armfoot, джерело
+1 ???????????????????????????? чи знаєте ви, скільки часу може бути імена файлів ??
додано Автор Dany Bee, джерело

Переконайтеся, що є більше ? , ніж є символи найдовшого імені:

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

Див. Як команда Windows RENAME інтерпретує підстановки? для отримання додаткової інформації.

Нове рішення - 12.12.2014

Fабо those who like regular expressions, there is JREN.BAT - a hybrid JScript/batch command line utility that will run on any version of Windows from XP fабоward.

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

або

jren "^(.*)(\.txt)$" "$1 1.1$2" /i
19
додано
@Armfoot - Так - JREN використовує стандартний регулярний вираз JSCRIPT, тому підтримуються класи стилів зі скороченнями. Ви можете прочитати документацію Microsoft Regex синтаксису .
додано Автор dbenham, джерело
Максимальна довжина імені файлу - 255 символів. Але практична межа для більшості сценаріїв менша, оскільки максимальний загальний шлях, підтримуваний інтерфейсом Windows, становить 259 символів. Загальна довжина шляху включає інформацію про об'єми, папки та файлу, а також нульовий термінатор. Див. msdn.microsoft.com/en-us/library/aa365247.aspx для отримання додаткової інформації.
додано Автор dbenham, джерело
Дякую за те, що ввів дрєн, саме те, що мені було потрібно, просто коротке і швидке. До речі, за допомогою цього можна скористатись класами стовпців зі стилем , як-от \ d або \ w .
додано Автор Armfoot, джерело
+1 ???????????????????????????? чи знаєте ви, скільки часу може бути імена файлів ??
додано Автор Dany Bee, джерело

Переконайтеся, що є більше ? , ніж є символи найдовшого імені:

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

Див. Як команда Windows RENAME інтерпретує підстановки? для отримання додаткової інформації.

Нове рішення - 12.12.2014

Fабо those who like regular expressions, there is JREN.BAT - a hybrid JScript/batch command line utility that will run on any version of Windows from XP fабоward.

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

або

jren "^(.*)(\.txt)$" "$1 1.1$2" /i
19
додано
@Armfoot - Так - JREN використовує стандартний регулярний вираз JSCRIPT, тому підтримуються класи стилів зі скороченнями. Ви можете прочитати документацію Microsoft Regex синтаксису .
додано Автор dbenham, джерело
Максимальна довжина імені файлу - 255 символів. Але практична межа для більшості сценаріїв менша, оскільки максимальний загальний шлях, підтримуваний інтерфейсом Windows, становить 259 символів. Загальна довжина шляху включає інформацію про об'єми, папки та файлу, а також нульовий термінатор. Див. msdn.microsoft.com/en-us/library/aa365247.aspx для отримання додаткової інформації.
додано Автор dbenham, джерело
Дякую за те, що ввів дрєн, саме те, що мені було потрібно, просто коротке і швидке. До речі, за допомогою цього можна скористатись класами стовпців зі стилем , як-от \ d або \ w .
додано Автор Armfoot, джерело
+1 ???????????????????????????? чи знаєте ви, скільки часу може бути імена файлів ??
додано Автор Dany Bee, джерело
for /f "delims=" %%i in ('dir /b /a-d *.txt') do ren "%%~i" "%%~ni 1.1%%~xi"

Якщо ви використовуєте звичайний цикл for без параметра /f , вже перейменовані файли знову буде перейменовано.

16
додано
що означає "~ n" в "%% ~ ni 1.1%% ~ xi"? Я не розумію, як це працює ...
додано Автор ocrampico, джерело
for /f "delims=" %%i in ('dir /b /a-d *.txt') do ren "%%~i" "%%~ni 1.1%%~xi"

Якщо ви використовуєте звичайний цикл for без параметра /f , вже перейменовані файли знову буде перейменовано.

16
додано
що означає "~ n" в "%% ~ ni 1.1%% ~ xi"? Я не розумію, як це працює ...
додано Автор ocrampico, джерело
for /f "delims=" %%i in ('dir /b /a-d *.txt') do ren "%%~i" "%%~ni 1.1%%~xi"

Якщо ви використовуєте звичайний цикл for без параметра /f , вже перейменовані файли знову буде перейменовано.

16
додано
що означає "~ n" в "%% ~ ni 1.1%% ~ xi"? Я не розумію, як це працює ...
додано Автор ocrampico, джерело

Крок 1:

Виділити всі файли (ctrl + A)

Крок 2.

Потім оберіть варіант перейменування

enter image description here

Step 3:

Choose your filename... for ex: myfile

it automatically rename to myfile (01),myfile (02),,.....

If you want to replace spaces & bracket.. continue step 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(")"),""}
12
додано
Це powershell чудово. Дякую
додано Автор Stephen Pefanis, джерело
Можливо, кредити будуть howtogeek.com/111859/… ?
додано Автор sancho.s, джерело

Крок 1:

Виділити всі файли (ctrl + A)

Крок 2.

Потім оберіть варіант перейменування

enter image description here

Step 3:

Choose your filename... for ex: myfile

it automatically rename to myfile (01),myfile (02),,.....

If you want to replace spaces & bracket.. continue step 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(")"),""}
12
додано
Це powershell чудово. Дякую
додано Автор Stephen Pefanis, джерело
Можливо, кредити будуть howtogeek.com/111859/… ?
додано Автор sancho.s, джерело

Нижче команда буде виконувати цю роботу.

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

source: Rename file extensions in bulk

10
додано
+1 Я думаю, що це найпростіший спосіб запам'ятовувати, набагато простіший за синтаксис for cmd, але розчарування в тому, що він повинен викликати новий процес cmd.exe для кожної ітерації. Це робить це дуже неефективним і повільним, як патока.
додано Автор Amit Naidu, джерело

Нижче команда буде виконувати цю роботу.

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

source: Rename file extensions in bulk

10
додано
+1 Я думаю, що це найпростіший спосіб запам'ятовувати, набагато простіший за синтаксис for cmd, але розчарування в тому, що він повинен викликати новий процес cmd.exe для кожної ітерації. Це робить це дуже неефективним і повільним, як патока.
додано Автор Amit Naidu, джерело

Нижче команда буде виконувати цю роботу.

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

source: Rename file extensions in bulk

10
додано
+1 Я думаю, що це найпростіший спосіб запам'ятовувати, набагато простіший за синтаксис for cmd, але розчарування в тому, що він повинен викликати новий процес cmd.exe для кожної ітерації. Це робить це дуже неефективним і повільним, як патока.
додано Автор Amit Naidu, джерело
@echo off
for %%f in (*.txt) do (
    ren "%%~nf%%~xf" "%%~nf 1.1%%~xf"
)
3
додано
Для когось не буде працювати: для% f в (* .txt) робити (ren "% ~ nf% ~ xf" "% ~ nf 1.1% ~ xf")
додано Автор nyconing, джерело
@echo off
for %%f in (*.txt) do (
    ren "%%~nf%%~xf" "%%~nf 1.1%%~xf"
)
3
додано
Для когось не буде працювати: для% f в (* .txt) робити (ren "% ~ nf% ~ xf" "% ~ nf 1.1% ~ xf")
додано Автор nyconing, джерело
@echo off
for %%f in (*.txt) do (
    ren "%%~nf%%~xf" "%%~nf 1.1%%~xf"
)
3
додано
Для когось не буде працювати: для% f в (* .txt) робити (ren "% ~ nf% ~ xf" "% ~ nf 1.1% ~ xf")
додано Автор nyconing, джерело

Спробуйте це Масове перейменування утиліти . Це добре працює. Можливо, не винаходити колесо. Якщо вам не потрібний скрипт, це хороший спосіб піти.

2
додано

Спробуйте це Масове перейменування утиліти . Це добре працює. Можливо, не винаходити колесо. Якщо вам не потрібний скрипт, це хороший спосіб піти.

2
додано

Спробуйте це Масове перейменування утиліти . Це добре працює. Можливо, не винаходити колесо. Якщо вам не потрібний скрипт, це хороший спосіб піти.

2
додано

Я спробував вставити команду Ендоро (спасибі Endoro) безпосередньо в командний рядок, щоб додати префікс до файлів, але зіткнувся з помилкою. Рішення було зменшити %% до%, так що:

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

Я спробував вставити команду Ендоро (спасибі Endoro) безпосередньо в командний рядок, щоб додати префікс до файлів, але зіткнувся з помилкою. Рішення було зменшити %% до%, так що:

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

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

Ось сценарій, який я написав:

# filename: bulk_file_rename.ps1
# by: субканал
# 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++
}

Я сподіваюсь, що це корисно для когось там.

субканал

0
додано

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

Ось сценарій, який я написав:

# filename: bulk_file_rename.ps1
# by: субканал
# 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++
}

Я сподіваюсь, що це корисно для когось там.

субканал

0
додано

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

Ось сценарій, який я написав:

# filename: bulk_file_rename.ps1
# by: субканал
# 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++
}

Я сподіваюсь, що це корисно для когось там.

субканал

0
додано

Це працює для вашого конкретного випадку:

ren file?.txt "file? 1.1.txt" 
0
додано