Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Renommer des fichiers

12 réponses
Avatar
Pat
Bonjour,


Je suis un débutant en scripting et je cherche un moyen de renommer un
fichier ou plusieurs de la manière suivante :

1 - le script vérifie la présence de fichier dans le répertoire de travail.

2 - Ronomme uniquement le ou les fichiers ayant la syntaxe suivante :

avant exécution du script : toto.old

après exécution du script : toto_jjmmaaaa.old

il faut que le script conserve l'extension d'origine et ajoute
uniquement la date du jour et le caractère de séparation ( _ ).

Merci beaucoup d'avance de votre aide.

10 réponses

1 2
Avatar
Stéphane CARDIN
Voilà :


[code]
Set fso=CreateObject("Scripting.FileSystemObject")

path="Chemin du répertoire à définir"

If Not fso.FolderExists(path) Then Wscript.Echo "Le Chemin spécifié n'éxiste
pas!" : Wscript.Quit


Set colFile=fso.GetFolder(path).Files

If Not colFile.Count>0 Then Wscript.Quit

For Each file In colFile
Set fichier=fso.GetFile(file)

If fichier.Type="Fichier OLD" Then
nomFichier=fichier.Name
nomFichier=Replace(LCase(nomFichier), ".old", "") & "_" & Day(Now) &
Month(Now) & Year(Now) & ".old"
fichier.Name=nomFichier
Else
End If
Next


Wscript.Echo "Tâche terminée!"
[/code]



"Pat" a écrit dans le message de groupe de
discussion :
Bonjour,


Je suis un débutant en scripting et je cherche un moyen de renommer un
fichier ou plusieurs de la manière suivante :

1 - le script vérifie la présence de fichier dans le répertoire de
travail.

2 - Ronomme uniquement le ou les fichiers ayant la syntaxe suivante :

avant exécution du script : toto.old

après exécution du script : toto_jjmmaaaa.old

il faut que le script conserve l'extension d'origine et ajoute
uniquement la date du jour et le caractère de séparation ( _ ).

Merci beaucoup d'avance de votre aide.




Avatar
MCI (ex do ré Mi chel la si do) [MVP]
Bonsoir !

Une solution, avec un petit batch :

@echo off
setlocal
pushd .
CD /DC:dossier

set DAT=%DATE%
set J=%DAT:~0,2%
set M=%DAT:~3,2%
set A=%DAT:~6,4%
set D=_%A%%M%%J%

FOR %%i IN (*.old) DO ren %%i %%~ni_%D%%%~xi

popd
endlocal


Penser à (re)-définir le dossier à traiter, et, éventuellement, le
pattern (*.old ?)


@-salutations
--
Michel Claveau
Avatar
Gilles LAURENT [MVP]
"Pat" a écrit dans le message de
news:
| Bonjour,

Bonjour,

| Je suis un débutant en scripting et je cherche un moyen de renommer
| un fichier ou plusieurs de la manière suivante :
[...]

Bon, ci-dessous une solution en PowerShell ;-)

--- Coupez ici : Rename-Files.ps1 ---
$now=Get-Date -Uformat "%d%m%Y"
gci *.old | % {
$basename=[IO.Path]::GetFileNameWithoutExtension($_)
ren "$($_.FullName)" "$($basename)_$($now)$($_.Extension)"
}
--- Coupez ici : Rename-Files.ps1 ---

Windows PowerShell :
http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Avatar
Stéphane CARDIN
puissant le PowerShell... ^_^

"Gilles LAURENT [MVP]" a écrit dans le message de groupe de
discussion :
"Pat" a écrit dans le message de
news:
| Bonjour,

Bonjour,

| Je suis un débutant en scripting et je cherche un moyen de renommer
| un fichier ou plusieurs de la manière suivante :
[...]

Bon, ci-dessous une solution en PowerShell ;-)

--- Coupez ici : Rename-Files.ps1 ---
$now=Get-Date -Uformat "%d%m%Y"
gci *.old | % {
$basename=[IO.Path]::GetFileNameWithoutExtension($_)
ren "$($_.FullName)" "$($basename)_$($now)$($_.Extension)"
}
--- Coupez ici : Rename-Files.ps1 ---

Windows PowerShell :
http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr




Avatar
Pat
Merci beaucoup de votre aide très efficace !

Par contre j'avais une petite question, ou faut-il modifier le chemin du
repertoire de travail dans le script PowerShell ?



"Gilles LAURENT [MVP]" a écrit :

"Pat" a écrit dans le message de
news:
| Bonjour,

Bonjour,

| Je suis un débutant en scripting et je cherche un moyen de renommer
| un fichier ou plusieurs de la manière suivante :
[...]

Bon, ci-dessous une solution en PowerShell ;-)

--- Coupez ici : Rename-Files.ps1 ---
$now=Get-Date -Uformat "%d%m%Y"
gci *.old | % {
$basename=[IO.Path]::GetFileNameWithoutExtension($_)
ren "$($_.FullName)" "$($basename)_$($now)$($_.Extension)"
}
--- Coupez ici : Rename-Files.ps1 ---

Windows PowerShell :
http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr





Avatar
Gilles LAURENT [MVP]
"Pat" wrote:

Merci beaucoup de votre aide très efficace !



C'est PowerShell ;-)

Par contre j'avais une petite question, ou faut-il modifier le chemin du
repertoire de travail dans le script PowerShell ?



La commande gci *.old traitera les fichiers du répertoire courant
La commande gci d:test*.old traitera les fichiers du répertoire d:test

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Avatar
Pat
C'est génial ça marche ! Je pense que je vasi me mettre à PowerShell !!

J'avais oublié d'ajouter dans ma problématique que le script doit modifier
uniquement les fichiers avec l'extension .old et qui n'ont pas le caractère
de séparation ( _ ) . Car sinon il renomme plusieurs le même fichier !

Merci !


"Gilles LAURENT [MVP]" a écrit :

"Pat" wrote:

> Merci beaucoup de votre aide très efficace !

C'est PowerShell ;-)

> Par contre j'avais une petite question, ou faut-il modifier le chemin du
> repertoire de travail dans le script PowerShell ?

La commande gci *.old traitera les fichiers du répertoire courant
La commande gci d:test*.old traitera les fichiers du répertoire d:test

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr



Avatar
Gilles LAURENT [MVP]
"Pat" wrote:

C'est génial ça marche ! Je pense que je vasi me mettre à PowerShell !!

J'avais oublié d'ajouter dans ma problématique que le script doit modifier
uniquement les fichiers avec l'extension .old et qui n'ont pas le caractère
de séparation ( _ ) . Car sinon il renomme plusieurs le même fichier !



Pour ne pas traiter les fichiers plusieurs fois (exclusion de l'underscore) :
gci *.old -exclude *_*

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Avatar
F. Dunoyer [MVP]
MCI (ex do ré Mi chel la si do) [MVP] a écrit :
Bonsoir !

Une solution, avec un petit batch :

@echo off
setlocal
pushd .
CD /DC:dossier

set DAT=%DATE%
set J=%DAT:~0,2%
set M=%DAT:~3,2%
set A=%DAT:~6,4%
set D=_%A%%M%%J%

FOR %%i IN (*.old) DO ren %%i %%~ni_%D%%%~xi

popd
endlocal


Penser à (re)-définir le dossier à traiter, et, éventuellement, le pattern
(*.old ?)


@-salutations



Si vous avez un parc avec des Windows 2000, je proposerais ça pour le
calcul de la date (la suite est identique) car si la précédente
solution est très satisfaisante sur mon XP ou sur mes serveurs 2003,
elle s'est révélée inadaptée sur les "vieux" serveurs 2000 parce que la
commande date ne renvoie pas la date de la même façon ("lun
19/09/2006"). Donc voici la "formule" qui marche sur les XP/2003/2000 :

Rem Calcul de la chaine DATE AAAAMMJJ
set WD=%DATE:/=%
if "%WD:~4,1%"=="2" (
set D=%WD:~4,4%%WD:~2,2%%WD:~0,2%
) ELSE set D=%WD:~9,4%%WD:~7,2%%WD:~5,2%
Echo %D%


oups il faudra quand même modifier le script en 3000 :(

--
François Dunoyer [MVP Windows Server Admin Framework]
Quelques liens pour Windows : http://fds.mvps.org/AdressesInternets.htm
Site perso : http://fds.mvps.org
Blog : http://fds34.spaces.live.com/
Avatar
MCI \(ex do ré Mi chel la si do\) [MVP]
Bonsoir !

Pour que ça fonctionne, chez moi, j'ai dû modifier comme suit :
setlocal
set WD=%DATE%
if "%WD:~6,1%"=="2" (set D=%WD:~6,4%%WD:~3,2%%WD:~0,2%
) ELSE set D=%WD:~11,4%%WD:~8,2%%WD:~5,2%
echo %D%
endlocal

Mais, il est vrai que c'est une routine à conserver, et qui passe aussi
sur 2000. Merci d'avoir soulevé/rappelé le problème.

@-salutations
--
Michel Claveau
1 2