culture Création fichier batch

Statut
La discussion n'est pas ouverte à d'autres réponses

Ryo

Expert
Salut,

je post ça ici ne sachant pas vraiment où le mettre. Dans le cadre de mon boulot, quelques petits batch me simplifiraient bien la vie.
Savez-vous s'il est possible de créer un batch qui permettrait d'arrêter un service, de vider un dossier une fois ce service arrêté et de relancer ce service une fois le dossier vidé?
Un clic pour faire un truc qui m'en demande 10x plus en temps normal, le rêve non ? :sourire-4e62:

A savoir que je n'y connais absolument rien en fichier batch, j'ai cherché sur le net des sites en parlant, je tombe soit sur des sites où des mecs te parlent de ça comme si t'avais fait ça toute ta vie, soit sur des forums ou les gens répondent des trucs incompréhensibles.. Donc si vous avez un site à me conseiller, je suis preneur.

Merci :hat-1194:
 
Dernière modification par un modérateur:
voila :sourire-4e62: :

Code:
@echo off
cls
net stop "service"
rem remplace service par le nom du service à arrêter (en laissant les guillemets)
del "C:\dossier à effacer\*.*"
net start "service"
rem idem qu'au dessus
pause
exit

Le tout dans un fichier .bat

Sous xp et vista, il se pet que le batch ne se ferme pas tout seul, faudra le quitter à la main :icon_wink-221e:
 
parce que dans certains cas (ne me demande pas pourquoi ça marche un coup et pas l'autre :lol-1923:), si le fichier ne se quite pas tout seul avec un exit, il à tendance à le faire quand le exit est après un pause :dontknow-102c:

Je parle par expérience :sourire-4e62:
 
Merci Neo :icon_wink-221e:

Cependant après test ça ne fonctionne pas chez moi. J'ai créé un nouveau dossier à la racine de C:\ et j'ai mis ça:

Code:
@echo off
cls
net stop "spooler"
del "C:\Nouveau dossier\*.*"
net start "spooler"
pause
exit

Voilà ce que ça me donne:

'net' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.
'net' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.
Appuyez sur une touche pour continuer...

Et le nouveau dossier ne se supprime pas :dontknow-102c:
 
Dernière édition:
NEO corrigera si je me trompe mais je crois plutot qu il faille mettre
net stop spooler.exe
et

del "C:\Nouveau dossier\*.*"</pre>
 
Merci Neo :icon_wink-221e:
Cependant après test ça ne fonctionne pas chez moi. J'ai créé un nouveau dossier à la racine de C:\ et j'ai mis ça:
Code:
@echo off
cls
net stop "spooler"
del "C:\Nouveau dossier\*.*"
net start "spooler"
pause
exit
Voilà ce que ça me donne:
Et le nouveau dossier ne se supprime pas :dontknow-102c:

Alors déjà pour la suppression du dossier, soit tu supprimes juste sont contenu et là tu mets un \ avant *.*, soit tu supprimes le dossier et là tu fais

Code:
del "C:\nouveau dossier\*.*"
del "C:\nouveau dossier"

pour les erreurs sur 'net', là il y à un problème, ça devrait marcher... Tu as quel os ?
 
NEO corrigera si je me trompe mais je crois plutot qu il faille mettre
net stop spooler.exe
et

del "C:\Nouveau dossier\*.*"</pre>

Pour le del, je viens de répondre, et pour le net, normalement il n'y à pas besoin du .exe puisque l'on fait appel au nom du service et non de l'exécutable associé
 
J'vais pi etre arreter de dire de betise et aller me coucher.

J ai suggérer le .exe par souvenir du taskkill en cour pour s amuser...
 
Suis sous XP Pro Sp3 :dontknow-102c: Pas grave je test sur mon deuxième PC dès demain. Pas de raison que ça ne fonctionne pas sur les PC de mon taf donc un grand merci :icon_wink-221e:

Juste une question, le service en question est très souvent lent à s'arrêter, si j'ai bien compris le contenu du fichier ne s'efface que quand le service a été arrêté?

Certains des PC du parc informatique que je gère sont des antiquités et tournent encore sous windows 2000, tu penses que ça fonctionnera?
 
Logiquement, tout est exécuté à la suite, sans attendre la fin de chaque opération, je sais qu'on peut faire en sorte d'attendre, mais je ne l'ai plus en tête, je cherches et je te redis :icon_wink-221e:

Les commandes sont censés marcher sous 2000/XP/Vista :sourire-4e62:
 
Merci beaucoup :hat-1194:

En fait pour que ce batch me soit utile il faut que les fichiers soient supprimés seulement quand le service est arrêté. Les fichiers sont en cours d'exécution donc impossible à supprimer tant que le service est en route..

EDIT: Après recherche il y aura possibilité d'integrer la commande ping pour integrer un laps de temps, pas encore réussi mais je vais finir par comprendre.
Sinon integrer un autre "pause" le temps que le service se ferme :sourire-4e62:
 
Dernière édition:
Je sais qu'il existe une commande supplémentaire qui attend que la commande précédente soit finie pour lire la suivante... J'essaierai de retrouver ça demain :icon_wink-221e:

EDIT : autant pour moi, apparemment, la commande net start/stop attendrait d'elle-même le lancement/arrêt du service avant de continuer :dontknow-102c:
 
Dernière édition:
Génial donc :icon_wink-221e:

Pour mon problème de commande non reconnu, j'ai essayé bêtement de lancer un ping, un ipconfig, rien ne marche :017:
La variable path ne pointait plus vers C:\WINDOWS\system32 mais vers un soft que je regrette déjà d'avoir installé... M'enfin c'est réglé.

Un grand merci à toi Neo, je test ton batch Lundi au taf et te tiens au jus.
 
Pause…

Juste une petite remarque à propos de la commande pause : c'est une manière élégante de laisser à l'utilisateur le temps de consulter les traces de son batch avant que la fenêtre ne soit refermée par la commande exit.
Exemple :
<div style="font-family:Courier New;font-size:12px;width:460px;border:1px solid #369;padding:10px;text-align:left;background-color:white">@echo off
rem&nbsp;&nbsp;Batch C:\monDossier\monBatch.bat
echo ------------------------------------------------------------
echo Liste de monDossier
echo ------------------------------------------------------------
dir C:\monDossier
echo ------------------------------------------------------------
pause
exit</div>
img-0106011ag6g.jpg
 
La variable path ne pointait plus vers C:\WINDOWS\system32 mais vers un soft que je regrette déjà d'avoir installé... M'enfin c'est réglé.
Un grand merci à toi Neo, je test ton batch Lundi au taf et te tiens au jus.

:pouce1-1a0b:

Juste une petite remarque à propos de la commande pause...

c'est vrai que pause est un bon moyen de vérifier si ça marche, tu as bien fait de le préciser :sourire116-287e:
 
Je sais qu'il existe une commande supplémentaire qui attend que la commande précédente soit finie pour lire la suivante... J'essaierai de retrouver ça demain :icon_wink-221e:

EDIT : autant pour moi, apparemment, la commande net start/stop attendrait d'elle-même le lancement/arrêt du service avant de continuer :dontknow-102c:
Nous utilisions la commande 'If exist' ou 'errorlevel', dans le temps (cela fait un bail), je ne sais ce que fait ta commande précédente, mais il y a peut etre moyen de ce coté la .
Papy
 
Nous utilisions la commande 'If exist' ou 'errorlevel', dans le temps (cela fait un bail), je ne sais ce que fait ta commande précédente, mais il y a peut etre moyen de ce coté la .
Papy

C'est bon, la commande net attend d'être terminée avant de continuer, donc pas besoin d'une autre commande :icon_wink-221e:
 
Pour le temps d'attente, des mecs disent d'utiliser ça, peut-être que ça vous parle:
ping -n 'nbr de seconde +1' 127.0.0.1 >nul
De ce que j'en comprend, ça ping la carte réseau pour introduire un retard pour l'action suivante, mais comment ça marche ça je pige pas.

En tout cas c'est cool les batch, ça transforme les actions répétitives d'un technicien en un seul clic. Surtout quand t'as la main sur le poste, que la connexion est pourrie et que le PC de l'utilisateur est à l'agonie :icon17-36f7:

Maintenant que j'ai compris le principe, me reste plus qu'à en créer un qui nettoie les fichiers temporaires en tout genre :pouce1-1a0b:
 
Dernière édition:
Pour le temps d'attente, des mecs disent d'utiliser ça, peut-être que ça vous parle:
ping -n 'nbr de seconde +1' 127.0.0.1 >nul
De ce que j'en comprend, ça ping la carte réseau pour introduire un retard pour l'action suivante, mais comment ça marche ça je pige pas.

La je ne sais pas non plus, je n'ai jamais utilisé ping pour créer un temps d'attente :dontknow-102c:

En tout cas c'est cool les batch, ça transforme les actions répétitives d'un technicien en un seul clic. Surtout quand t'as la main sur le poste, que la connexion est pourrie et que le PC de l'utilisateur est à l'agonie :icon17-36f7:
Maintenant que j'ai compris le principe, me reste plus qu'à en créer un qui nettoie les fichiers temporaires en tout genre :pouce1-1a0b:

:045:

D'ailleurs si tu veux en savoir plus sur le batch, je te conseille le logiciel Powerbatch d'Astase, qui est parfait pour développer en batch, et même l'apprendre (il y à un tuto très bien fait dedans et des raccourcis dans le logiciel pour programmer très très facilement en batch) :pouce1-1a0b:
 
Sympa le soft merci.

Sinon en cherchant sur le net je viens de tomber la dessus:

Code:
@echo off
REM @echo on
rem ==========
REM clenup.bat
rem ==========
REM @echo IPN : %1%
REM @echo profil : %1%
set profil=%username%
echo %profil%
echo " "
echo "PURGE DU DOSSIER : c:\documents and settings\%profil%\Local Settings\Temporary Internet Files"
pause
del /F /S /Q "c:\documents and settings\%profil%\Local Settings\Temporary Internet Files\*.*"
echo " "
echo "PURGE DU DOSSIER : c:\documents and settings\%profil%\Local Settings\Temporary Internet Files\Content.ie5"
pause
del /F /S /Q "c:\documents and settings\%profil%\Local Settings\Temporary Internet Files\Content.ie5\*.*"
echo " "
echo "PURGE DU DOSSIER : c:\documents and settings\%profil%\Local Settings\Temp"
pause
del /F /S /Q "c:\documents and settings\%profil%\Local Settings\Temp\*.*"
echo " "
echo "PURGE DU DOSSIER : c:\documents and Settings\%profil%\Cookies"
pause
del /F /S /Q "c:\documents and Settings\%profil%\Cookies\*.*"
echo "PURGE DU DOSSIER : c:\documents and Settings\%profil%\Recent"
pause
del /F /S /Q "c:\documents and Settings\%profil%\Recent\*.*"
echo "PURGE DU DOSSIER : "c:\WINDOWS\Temp\*.*"
pause
del /F /S /Q "c:\WINDOWS\Temp\*.*"
echo "\nFIN DU TRAITEMENT"
pause
@echo off

J'y ai ajouté à la fin:
Code:
pause
del /F /S /Q "c:\WINDOWS\Temp\*.*"

Ça m'a l'air valable pour nettoyer les fichiers temporaires.
 
Dans la foulé tu peux vider le dossier Prefetch aussi..


Au fur et a mesure de l’utilisation de votre ordinateur, le dossier prefetch se remplit de liens obsolètes et peut ralentir considérablement votre ordinateur.

Allez dans votre dossier système (généralement C:\Windows\) puis dans le dossier prefetch, videz le et redémarrez.

Source : SupInfo
 
Pas bête j'y avais pas pensé :hat-1194:

Sinon j'ai refait le premier batch en utilisant les commandes du deuxième, ça donne ça:

Code:
@echo off
cls
net stop "spooler"
del /F /S /Q "c:\Nouveau dossier"
echo "PURGE DU DOSSIER : "c:\Nouveau dossier"
net start "spooler"
exit
Au final il est totalement automatique et me demande plus de confirmer par "o" et "entrée" la suppression du contenu du dossier.

Encore une fois merci, j'ai ce que je voulais :icon_clap1-1a1655:
Reste plus que mon client accepte l'utilisation de ce type de batch sur son parc informatique, et vu comment il est chiant c'est pas gagné :dontknow-102c:
 
Problème résolu, donc je peux verrouiller ? Ou tu as encore des questions ?

Si c'est totalement résolu, n'oublie pas le tag [Résolu] :icon_wink-221e:
 
Si ça t'embête pas je préfère attendre Lundi, pour le voir en utilisation, avec le vrai service et le vrai fichier à vider..
Des fois que :dontknow-102c:
 
Le batch fonctionne à merveille. Enfin j'ai du caler un "pause" juste après la suppression des fichiers, sinon le service se relançait avant la fin de la suppression et ça posait problème.

Encore merci, vous pouvez fermer :hat-1194:
 
Statut
La discussion n'est pas ouverte à d'autres réponses
Retour
Haut