[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.
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" <Pat@discussions.microsoft.com> a écrit dans le message de groupe de
discussion : FEEEBFF2-517B-486E-B776-C012E372052C@microsoft.com...
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 ( _ ).
[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.
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
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 ?)
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
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
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
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]
"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
"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
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]
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] 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/
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]
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
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.
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.