Renommer plusieurs fichiers dans cmd

si j'ai plusieurs fichiers dans un répertoire et que je veux ajouter quelque chose à leur nom de fichier, mais pas à l'extension, comment faire?

j'ai essayé ce qui suit, avec les fichiers de test file1.txt et file2.txt :

ren *.txt *1.1.txt

ce fichier est renommé file1.1.txt et file2.txt1.1.txt

je veux que les fichiers soient file1 1.1.txt et file2 1.1.txt

sera - t-il possible à partir du cmd ou ai-je besoin d'un fichier bat pour faire ça? Qu'en PowerShell?

22
demandé sur phuclv 2013-06-24 12:57:56

9 réponses

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

si vous utilisez la simple boucle for sans le paramètre /f , les fichiers déjà renommés seront à nouveau renommés.

15
répondu Endoro 2013-06-24 11:21:13

assurez-vous qu'il y a plus de ? qu'il n'y a de caractères dans le nom le plus long:

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

voir comment la commande Windows renommer interprète-t-elle les caractères génériques? pour plus d'info.

Nouvelle Solution-2014/12/01

pour ceux qui aiment les expressions régulières, il y a JREN.BAT - un utilitaire de ligne de commande JScript/batch hybride qui exécutez sur N'importe quelle version de Windows à partir de XP forward.

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

ou

jren "^(.*)(\.txt)$" " 1.1" /i
19
répondu dbenham 2017-03-20 10:18:27

Étape 1:

sélectionner tous les fichiers (ctrl + A)

Étape 2:

puis choisir l'option rename

enter image description here

Étape 3:

choisissez votre nom de fichier... par exemple: myfile

il renommer automatiquement à monfichier (01),myfile (02),,.....

si vous voulez remplacer les espaces et le support.. suite étape 4

Étape 4:

ouvrir Windows Powershell à partir de votre dossier actuel

enter image description here

Étape 5:

pour remplacer l'espace vide pour souligner ( _ )

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

Étape 6:

pour remplacer le support ouvert

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

pour remplacer bracket

 dir | rename-item -NewName {$_.name -replace [Regex]::Escape(")"),""}
12
répondu Ranjith Kumar 2016-12-15 10:25:41

la commande ci-dessous ferait le travail.

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

source: renommer les extensions de fichier en vrac

10
répondu Giri 2015-01-09 18:32:45
@echo off
for %%f in (*.txt) do (
    ren "%%~nf%%~xf" "%%~nf 1.1%%~xf"
)
3
répondu Eugene 2013-06-24 09:55:03

essayez ce Bulk Rename Utility il fonctionne bien. Peut-être ne pas réinventer la roue. Si vous n'avez pas besoin d'un script, c'est une bonne façon de procéder.

2
répondu Panama Jack 2013-06-24 09:05:01

j'ai essayé de coller la commande D'Endoro (Merci Endoro) directement dans l'invite de commande pour ajouter un préfixe aux fichiers mais j'ai rencontré une erreur. La Solution était de réduire les % de% de % de, donc:

for /f "delims=" %i in ('dir /b /a-d *.*') do ren "%~i" "Service.Enviro.%~ni%~xi"
1
répondu MJA 2015-03-31 22:48:14

cela aussi m'a intrigué... Je n'ai pas aimé les parenthèses que windows met quand vous renommez en vrac. Dans Mes recherches, j'ai décidé d'écrire un script avec PowerShell à la place. Super facile et a fonctionné comme un charme. Maintenant, je peux l'utiliser chaque fois que j'ai besoin de traitement par lots de fichier renommer... ce qui est fréquent. Je prends des centaines de photos et L'appareil les nomme IMG1234.JPG etc...

voici le script que j'ai écrit:

# 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++
}

j'espère que c'est utile à quelqu'un.

subcan

0
répondu subcan 2015-03-03 23:11:10

cela fonctionne pour votre cas spécifique:

ren file?.txt "file? 1.1.txt" 
0
répondu jfajunior 2018-03-06 15:07:44