Renommer des fichiers

Le
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Stéphane CARDIN
Le #17710841
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" 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.




MCI (ex do ré Mi chel la si do) [MVP]
Le #17711251
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
Gilles LAURENT [MVP]
Le #17726241
"Pat" 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
Stéphane CARDIN
Le #17730071
puissant le PowerShell... ^_^

"Gilles LAURENT [MVP]" discussion :
"Pat" 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




Pat
Le #17732031
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" 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





Gilles LAURENT [MVP]
Le #17733841
"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
Pat
Le #17734001
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



Gilles LAURENT [MVP]
Le #17734881
"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
F. Dunoyer [MVP]
Le #17740391
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/
MCI \(ex do ré Mi chel la si do\) [MVP]
Le #17746961
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
Publicité
Poster une réponse
Anonyme