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?
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.
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
Étape 1:
sélectionner tous les fichiers (ctrl + A)
Étape 2:
puis choisir l'option rename
É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
É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(")"),""}
la commande ci-dessous ferait le travail.
forfiles /M *.txt /C "cmd /c rename @file \"@fname 1.1.txt\""
@echo off
for %%f in (*.txt) do (
ren "%%~nf%%~xf" "%%~nf 1.1%%~xf"
)
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.
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"
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
cela fonctionne pour votre cas spécifique:
ren file?.txt "file? 1.1.txt"