Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1671 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Batch] Eteindre les pc de mon reseau a partir d'un fichier texte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Batch] Eteindre les pc de mon reseau a partir d'un fichier texte

n°2264947
pierre059
Posté le 28-08-2015 à 15:30:53  profilanswer
 

Salut,  
 
Je voudrai à partir d'un batch arrêter les pc de mon réseau.
J'ai une liste de postes qui se trouvent dans un fichier TXT :
 
Exemple du Contenu du fichier TXT "A_eteindre.txt"
SEZ0LL00  
SEZ0LL01    
SEZ0LL02    
SEZ0LL03    
SEZ0LL04    
SEZ0LL05    
SEZ0LL06    
SEZ0LL07
 
Je veux aussi supprimer les blancs et les tabulations en fin de ligne sur chaque ligne qui contient le nom du poste avant de lancer la commande shutdown :
 

Code :
  1. @echo off
  2. set compt=0
  3. for /f "delims=" %%i in ('type A_eteindre.txt') do (
  4. set /a compt+=1
  5. rem recuperation du nom du poste
  6. set VrLgn=%%i
  7. rem suppression des tabulations de fin de ligne
  8. set chaine2=%VrLgn: =% 
  9.  
  10. rem suppression des blancs de fin de ligne
  11. set chaine2=%chaine2: =%
  12. echo Arret du Poste No %compt% _%chaine2%_
  13. echo shutdown /s /m \\%chaine2% /t 0 /f /d p:4:1
  14. %windir%\system32\Shutdown.exe /s /m \\%chaine2% /t 0 /f /d p:4:1
  15. )


 
Mais ça ne marche pas, on dirait qu'il balaye le fichier autant qu'il y a de ligne dedans, mais il m'affiche toujours le dernier de la liste :
 
Arret du Poste No 0 _SEZ0LL07_
shutdown /s /m \\SEZ0LL07 /t 0 /f /d p:4:1
Arret du Poste No 0 _SEZ0LL07_
shutdown /s /m \\SEZ0LL07 /t 0 /f /d p:4:1
Arret du Poste No 0 _SEZ0LL07_
shutdown /s /m \\SEZ0LL07 /t 0 /f /d p:4:1
....
 
Je ne pige pas.. Pouvez-vous m'aider ?


Message édité par pierre059 le 28-08-2015 à 15:41:09
mood
Publicité
Posté le 28-08-2015 à 15:30:53  profilanswer
 

n°2264950
rat de com​bat
attention rongeur méchant!
Posté le 28-08-2015 à 19:08:05  profilanswer
 

Déjà le comptage tout seul ne fonctionne pas, genre

Code :
  1. set compt=0
  2. for /f "delims=" %%i in ('type A_eteindre.txt') do (
  3. set /a compt+=1
  4. echo %compt%
  5. )
 

Tu est obligé de faire ça en batch? Avec du Perl ou autre c'est bien plus facile...

 

(Y'avait vraiment des gens qui maîtrisaient cette cochonnerie de batch à l'époque DOS??)


Message édité par rat de combat le 28-08-2015 à 19:08:39
n°2264951
rat de com​bat
attention rongeur méchant!
Posté le 28-08-2015 à 19:18:44  profilanswer
 

Code :
  1. @echo off
  2. setlocal enableextensions enabledelayedexpansion
  3. SET compt=0
  4. for /f "delims=" %%i in ('type A_eteindre.txt') do (
  5.   set /A compt=compt+1
  6.   set VrLgn=%%i
  7.   set chaine2=!VrLgn: =!
  8.   set chaine2=!chaine2: =!
  9.   echo Arret du Poste No !compt! _!chaine2!_
  10. )
  11. endlocal


Par contre ça enlève toutes les espaces, mais je suppose qu'il y en a pas dans les noms des postes.
edit: Et ça n'enlève pas les tab. Faut que je regarde set /?.
edit2: Bof, je laisse tomber pour les tab, autant les eviter dans le fichier.


Message édité par rat de combat le 28-08-2015 à 19:29:33
n°2264954
pierre059
Posté le 28-08-2015 à 21:05:42  profilanswer
 

Ah bah, merci, je suppose qu'il doit y avoir un bug dans mon script. Ou que c'est plutot la syntaxe années 90 qui bug.
Je connaissais pas ces syntaxes en .BAT. Surement du batch nouvelle génération. Moi, je suis resté aux années 90.. et oui, aux années DOS.
C'est presque pareil, mais ça marche.   :bounce:  Bizarre.
 
PS : pour supprimer les TAB, il suffit de mettre le caractère TAB (appuyer sur la touche TAB) à la place du _TAB_ :
 
set chaine2=!chaine2:_TAB_=!

Message cité 1 fois
Message édité par pierre059 le 28-08-2015 à 21:12:39
n°2265089
rat de com​bat
attention rongeur méchant!
Posté le 31-08-2015 à 16:19:23  profilanswer
 

pierre059 a écrit :


PS : pour supprimer les TAB, il suffit de mettre le caractère TAB (appuyer sur la touche TAB) à la place du _TAB_ :
set chaine2=!chaine2:_TAB_=!


Ah ouais, j'aurais pu deviner... :o

n°2265115
Je@nb
Kindly give dime
Posté le 31-08-2015 à 21:43:01  profilanswer
 

ça me fait mal au coeur de lire du batch en 2015 alors qu'en powershell c'est une ligne :(
gc monfichier |% { shutdown /s /m `\`\$_ /f /d p:4:1 } (pas testé)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Batch] Eteindre les pc de mon reseau a partir d'un fichier texte

 

Sujets relatifs
Python, supprimer une ligne d'un fichier texteremplacer une ligne dans un fichier
Transfert de données d'un fichier excel à un autreajouter un fichier .dll
import fichier csvavec ubuntu ??? operation non permise[résolu] Comment ajouter des fichier d'une version sur Sourceforge
[vbs] recup user name pr copier un fichier sur le bureau[Shell Linux] Recherche dans un fichier evolué
Extraire du float d'un fichier en .txt[C++] docu/tuto pour debuter en reseau de neuronnes artificiels
Plus de sujets relatifs à : [Batch] Eteindre les pc de mon reseau a partir d'un fichier texte


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR