Aide pour la création d'un script svp !
Résolu/Fermé
A voir également:
- Aide pour la création d'un script svp !
- Script vidéo youtube - Guide
- Creation compte gmail - Guide
- Création organigramme - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Création compte google - Guide
10 réponses
Utilisateur anonyme
13 oct. 2011 à 13:45
13 oct. 2011 à 13:45
Bonjour,
Il te faudra adapter selon ton besoin :
Exemple type :
Cdt
Lupin
Il te faudra adapter selon ton besoin :
Exemple type :
Const RepSource = "C:\Data" Dim objFSO, objFichier, objRepertoire Dim lDate, strDate, Mois, Jour lDate = DateAdd("Y", -10, Date) Mois = Month(lDate) If (Mois < 10) Then Mois = "0" & Mois End If Jour = Day(lDate) If (Jour < 10) Then Jour = "0" & Jour End If strDate = Jour & "-" & Mois & "-" & Year(lDate) Set objFSO = CreateObject("Scripting.FileSystemObject") Set objRepertoire = objFSO.GetFolder(RepSource) ' Destruction des anciens fichiers If (objRepertoire.Files.Count > 0) Then For Each objFichier In objRepertoire.Files ' Récupère le nom du fichier NomF = objFichier.Name ' Récupère la date dans le nom du fichier NomF = Mid$(NomF, 1, 8) ' Test si date < 10 jrs If (NomF < strDate) Then objFSO.DeleteFile (RepSource & "\" & objFichier.Name) End If Next End If Set objFSO = Nothing Set objRepertoire = Nothing Set objFichier = Nothing WScript.Quit(0)
Cdt
Lupin
merci pour votre réponse, mais pour l'instant j'avais plus un truc du genre :
set /a %%jour%%= %%date:~0,2%%>> purgelog.bat
echo. >> purgelog.bat
echo. >> purgelog.bat
IF %%jour%%==01 set jour=20>> purgelog.bat
IF %%jour%%==02 set jour=21>> purgelog.bat
IF %%jour%%==03 set jour=22>> purgelog.bat
IF %%jour%%==04 set jour=23>> purgelog.bat
IF %%jour%%==05 set jour=24>> purgelog.bat
IF %%jour%%==06 set jour=25>> purgelog.bat
IF %%jour%%==07 set jour=26>> purgelog.bat
IF %%jour%%==08 set jour=27>> purgelog.bat
IF %%jour%%==09 set jour=28>> purgelog.bat
IF %%jour%%==10 set jour=29>> purgelog.bat
IF %%jour%%==11 set jour=30>> purgelog.bat
IF %%jour%%==12 set jour=31>> purgelog.bat
IF %%jour%%==13 set jour=01>> purgelog.bat
IF %%jour%%==14 set jour=02>> purgelog.bat
IF %%jour%%==15 set jour=03>> purgelog.bat
IF %%jour%%==16 set jour=04>> purgelog.bat
IF %%jour%%==17 set jour=05>> purgelog.bat
IF %%jour%%==18 set jour=06>> purgelog.bat
IF %%jour%%==19 set jour=07>> purgelog.bat
IF %%jour%%==20 set jour=08>> purgelog.bat
IF %%jour%%==21 set jour=09>> purgelog.bat
IF %%jour%%==22 set jour=10>> purgelog.bat
IF %%jour%%==23 set jour=11>> purgelog.bat
IF %%jour%%==24 set jour=12>> purgelog.bat
IF %%jour%%==25 set jour=13>> purgelog.bat
IF %%jour%%==26 set jour=14>> purgelog.bat
IF %%jour%%==27 set jour=15>> purgelog.bat
IF %%jour%%==28 set jour=16>> purgelog.bat
IF %%jour%%==29 set jour=17>> purgelog.bat
IF %%jour%%==30 set jour=18>> purgelog.bat
IF %%jour%%==31 set jour=19>> purgelog.bat
echo %jour%
echo. >> purgelog.bat
echo. >> purgelog.bat
PAUSE
rmdir C:\dossiertest\%%jour%%-??-2011 /Q /S
PAUSE
exit
Apparement ça n'a rien a voir. Votre script semble plus complexe, n'y a t'il pas moyen d'arriver à quelque chose avec le bout de script ci dessus ?
set /a %%jour%%= %%date:~0,2%%>> purgelog.bat
echo. >> purgelog.bat
echo. >> purgelog.bat
IF %%jour%%==01 set jour=20>> purgelog.bat
IF %%jour%%==02 set jour=21>> purgelog.bat
IF %%jour%%==03 set jour=22>> purgelog.bat
IF %%jour%%==04 set jour=23>> purgelog.bat
IF %%jour%%==05 set jour=24>> purgelog.bat
IF %%jour%%==06 set jour=25>> purgelog.bat
IF %%jour%%==07 set jour=26>> purgelog.bat
IF %%jour%%==08 set jour=27>> purgelog.bat
IF %%jour%%==09 set jour=28>> purgelog.bat
IF %%jour%%==10 set jour=29>> purgelog.bat
IF %%jour%%==11 set jour=30>> purgelog.bat
IF %%jour%%==12 set jour=31>> purgelog.bat
IF %%jour%%==13 set jour=01>> purgelog.bat
IF %%jour%%==14 set jour=02>> purgelog.bat
IF %%jour%%==15 set jour=03>> purgelog.bat
IF %%jour%%==16 set jour=04>> purgelog.bat
IF %%jour%%==17 set jour=05>> purgelog.bat
IF %%jour%%==18 set jour=06>> purgelog.bat
IF %%jour%%==19 set jour=07>> purgelog.bat
IF %%jour%%==20 set jour=08>> purgelog.bat
IF %%jour%%==21 set jour=09>> purgelog.bat
IF %%jour%%==22 set jour=10>> purgelog.bat
IF %%jour%%==23 set jour=11>> purgelog.bat
IF %%jour%%==24 set jour=12>> purgelog.bat
IF %%jour%%==25 set jour=13>> purgelog.bat
IF %%jour%%==26 set jour=14>> purgelog.bat
IF %%jour%%==27 set jour=15>> purgelog.bat
IF %%jour%%==28 set jour=16>> purgelog.bat
IF %%jour%%==29 set jour=17>> purgelog.bat
IF %%jour%%==30 set jour=18>> purgelog.bat
IF %%jour%%==31 set jour=19>> purgelog.bat
echo %jour%
echo. >> purgelog.bat
echo. >> purgelog.bat
PAUSE
rmdir C:\dossiertest\%%jour%%-??-2011 /Q /S
PAUSE
exit
Apparement ça n'a rien a voir. Votre script semble plus complexe, n'y a t'il pas moyen d'arriver à quelque chose avec le bout de script ci dessus ?
Utilisateur anonyme
13 oct. 2011 à 14:47
13 oct. 2011 à 14:47
re:
Désolé, il y a for longtemps que j'ai abandonné les fichiers en lots
(batch files), je prônes plutôt l'utilisation du VBS (Visual Basic Scripting).
À mon humble avis, le VBS est beaucoup plus flexible que les fichiers en lots.
Cdt
Lupin
Désolé, il y a for longtemps que j'ai abandonné les fichiers en lots
(batch files), je prônes plutôt l'utilisation du VBS (Visual Basic Scripting).
À mon humble avis, le VBS est beaucoup plus flexible que les fichiers en lots.
Cdt
Lupin
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
13 oct. 2011 à 17:25
13 oct. 2011 à 17:25
re:
Si je comprends bien, tu n'as aucune connaissance en VBS ?
Il faut connaître la nomenclature exact du nom de fichier afin
d'y repérer la date selon le format spécifié.
1.) L'instruction [ strDate = Jour & "-" & Mois & "-" & Year(lDate) ]
définit le critère de recherche.
Est-ce bien le format recherche ?
Jour - Mois - Année
( 10-08-2010 ) -> Selon tes spécifications
2.) L'instruction [ NomF = Mid$(NomF, 1, 8) ]
capture le format de la Date dans le nom du fichier
NomF -> Nom du fichier par l'affectation [ NomF = objFichier.Name ]
Mid$(NomF, 1, 8)
Mid$("NomFichier","A partir du premier caractère","8 caractère de long")
-----------------------------
Posons que le nom du fichier est :
Position du caractère
12345678901234567890123
Donnee-10-08-2010-Août.txt
_______8
Pour en récupérer la date tu remplace l'instruction par :
NomF = Mid$(NomF, 8, 10)
Est-ce clair pour toi ?
Cdt
Lupin
Si je comprends bien, tu n'as aucune connaissance en VBS ?
Il faut connaître la nomenclature exact du nom de fichier afin
d'y repérer la date selon le format spécifié.
1.) L'instruction [ strDate = Jour & "-" & Mois & "-" & Year(lDate) ]
définit le critère de recherche.
Est-ce bien le format recherche ?
Jour - Mois - Année
( 10-08-2010 ) -> Selon tes spécifications
2.) L'instruction [ NomF = Mid$(NomF, 1, 8) ]
capture le format de la Date dans le nom du fichier
NomF -> Nom du fichier par l'affectation [ NomF = objFichier.Name ]
Mid$(NomF, 1, 8)
Mid$("NomFichier","A partir du premier caractère","8 caractère de long")
-----------------------------
Posons que le nom du fichier est :
Position du caractère
12345678901234567890123
Donnee-10-08-2010-Août.txt
_______8
Pour en récupérer la date tu remplace l'instruction par :
NomF = Mid$(NomF, 8, 10)
Est-ce clair pour toi ?
Cdt
Lupin
non je n'ai pas de bases en VBS mais j'ai compris l'instruction NomF.
L'élément que j'essai de supprimer est un répertoire, nommé par exemple 01-10-2011, donc de la même forme que dans votre exemple.
L'élément que j'essai de supprimer est un répertoire, nommé par exemple 01-10-2011, donc de la même forme que dans votre exemple.
Utilisateur anonyme
Modifié par Lupin.PC4 le 13/10/2011 à 19:43
Modifié par Lupin.PC4 le 13/10/2011 à 19:43
re:
Je suis mal barré, j'ai lu trop vite ton devis :-(
J'avais compris [ Fichiers ], après relecture je constate
qu'il s'agit de [ Dossiers ].
Voic donc le script modifié et testé :
Faire une copie de protection des répertoires avant l'utilisation :
Modifie la Constante [ RepSource ] selon ton environnement.
Place le script dans le dossier [ RepSource ].
Cdt
Lupin
Je suis mal barré, j'ai lu trop vite ton devis :-(
J'avais compris [ Fichiers ], après relecture je constate
qu'il s'agit de [ Dossiers ].
Voic donc le script modifié et testé :
Faire une copie de protection des répertoires avant l'utilisation :
Modifie la Constante [ RepSource ] selon ton environnement.
Place le script dans le dossier [ RepSource ].
Const RepSource = "C:\Document\Test" Dim objFSO, objDossier, objRepertoire Dim lDate, strDate, Mois, Jour, NomD, NomRechercher lDate = DateAdd("Y", -10, Date) Mois = Month(lDate) If (Mois < 10) Then Mois = "0" & Mois End If Jour = Day(lDate) If (Jour < 10) Then Jour = "0" & Jour End If strDate = Year(lDate) & Mois & Jour Set objFSO = CreateObject("Scripting.FileSystemObject") Set objRepertoire = objFSO.GetFolder(RepSource) For Each objDossier In objRepertoire.SubFolders NomD = objDossier.Name NomRechercher = Mid(NomD, 7, 4) & Mid(NomD, 4, 2) & Mid(NomD, 1, 2) If (NomRechercher < strDate) Then objDossier.Delete End If Next Set objFSO = Nothing Set objRepertoire = Nothing WScript.Echo("Traitement terminé") WScript.Quit(0)
Cdt
Lupin
Ouaou, c'est impressionnant ça marche parfaitement ! Les actions que je voulais exécuter sont toutes réussies.
Je vous remercie beaucoup du temps que vous m'avez consacré !
Une dernière question cependant, je n'ai pas saisi comment fonctionnait cette ligne:
Mid(NomD, 7, 4) & Mid(NomD, 4, 2) & Mid(NomD, 1, 2)
Pouvez vous me dire comment fonctionnent les chiffres ?
Je vous remercie beaucoup du temps que vous m'avez consacré !
Une dernière question cependant, je n'ai pas saisi comment fonctionnait cette ligne:
Mid(NomD, 7, 4) & Mid(NomD, 4, 2) & Mid(NomD, 1, 2)
Pouvez vous me dire comment fonctionnent les chiffres ?
Utilisateur anonyme
13 oct. 2011 à 22:54
13 oct. 2011 à 22:54
re:
Mid(NomD, 7, 4) & Mid(NomD, 4, 2) & Mid(NomD, 1, 2)
On trouve ici une concaténation de trois parties :
L'année :
Mid(NomD, 7, 4)
Dans la chaine de caractère NomD, prend à partir du 7ième
caractère 4 caractères.
Le mois :
Mid(NomD, 4, 2)
Dans la chaine de caractère NomD, prend à partir du 4ième
caractère 2 caractères.
Le Jour :
Mid(NomD, 1, 2)
Dans la chaine de caractère NomD, prend à partir du 1er
caractère 2 caractères.
Et enfin, l'éperluète ( & ) permet la concaténation.
Pour obtenir un ordre conséquent, il faut fournir les deux
format de Date en String ( strDate et NomF) sous la forme :
AAAAMMJJ
Autrement, lors du test ( If (NomRechercher < strDate) Then )
celui-ci ne se comporte pas comme voulu :
Ex. : If ( 10082010 < 03102011 ) Then
On voit bien que le première date est plus petite que la deuxième :
10-08-2010 est plus petit que 03-10-2011
Mais le test sur un type ( String ) produit que le premier caractère
de la première date est un ( 1 ) et le premier caractère de la deuxième
date est un ( 0 ), alors
10082010 est plus grand que 03102011.
d'où le remaniement de la Date sous forme de ( String ).
Cdt
Lupin
Mid(NomD, 7, 4) & Mid(NomD, 4, 2) & Mid(NomD, 1, 2)
On trouve ici une concaténation de trois parties :
L'année :
Mid(NomD, 7, 4)
Dans la chaine de caractère NomD, prend à partir du 7ième
caractère 4 caractères.
Le mois :
Mid(NomD, 4, 2)
Dans la chaine de caractère NomD, prend à partir du 4ième
caractère 2 caractères.
Le Jour :
Mid(NomD, 1, 2)
Dans la chaine de caractère NomD, prend à partir du 1er
caractère 2 caractères.
Et enfin, l'éperluète ( & ) permet la concaténation.
Pour obtenir un ordre conséquent, il faut fournir les deux
format de Date en String ( strDate et NomF) sous la forme :
AAAAMMJJ
Autrement, lors du test ( If (NomRechercher < strDate) Then )
celui-ci ne se comporte pas comme voulu :
Ex. : If ( 10082010 < 03102011 ) Then
On voit bien que le première date est plus petite que la deuxième :
10-08-2010 est plus petit que 03-10-2011
Mais le test sur un type ( String ) produit que le premier caractère
de la première date est un ( 1 ) et le premier caractère de la deuxième
date est un ( 0 ), alors
10082010 est plus grand que 03102011.
d'où le remaniement de la Date sous forme de ( String ).
Cdt
Lupin