[SHELL] modifier plusieurs fichiers à la fois
Fermé
raymond_domenech
-
10 sept. 2008 à 09:19
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 10 sept. 2008 à 11:18
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 10 sept. 2008 à 11:18
A voir également:
- [SHELL] modifier plusieurs fichiers à la fois
- Modifier liste déroulante excel - Guide
- Modifier dns - Guide
- Comment modifier un pdf - Guide
- Renommer plusieurs fichiers - Guide
- Comment réduire la taille d'un fichier - Guide
4 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
10 sept. 2008 à 09:26
10 sept. 2008 à 09:26
Salut,
Il nous faudrait un aperçu du contenu de ton tableur afin d'adapter au mieux le script (ou du moins t'aiguiller au mieux dans la réalisation) et un exemple de la structure de tes fichiers à modifier ainsi qu'un aperçu d'un fichier avant/après modification...
Il nous faudrait un aperçu du contenu de ton tableur afin d'adapter au mieux le script (ou du moins t'aiguiller au mieux dans la réalisation) et un exemple de la structure de tes fichiers à modifier ainsi qu'un aperçu d'un fichier avant/après modification...
salut et merci de ton aide
bon en fait il s'agit script d'ouverture de session en vbs que je voudrais modifier.
je me forme sous Linux en ce moment donc je voudrais faire la modif en shell, ça pourrait se faire autrement mais bon, je joins l'utile a l'agréable :)
donc dans le fichier en question qui a le nom d'inventaire d'un poste de travail du type : PC123456.vbs
dans ce fichier ce que je veux ajouter c'est une ligne à la fin pour monter une imprimante automatiquement.
la ligne c'est :
WshNetwork.AddWindowsPrinterConnection "\\serveur\imprimante"
donc j'ai un fichier avec dedans tout les scripts qui doivent récupérer par exemple l'imprimante IMP12345
donc la structure c'est un tableau une colonne avec dans chaque ligne les noms de scripts concernés, sans le chemin absolu, juste le nom du script.
je peux aussi changé ça et tout mettre dans un document d'un autre format si c'est la bonne méthode.
donc si PCXXXXXX.vbs fait partie de la liste1 j'ajoute WshNetwork.AddWindowsPrinterConnection "\\serveur\IMP123456"
s'il fait partie de la liste 2 j'ajoute WshNetwork.AddWindowsPrinterConnection "\\serveur\IMP654321" etc...
il y a 10 nouvelles machines et chaque pc doit avoir a l'ouverture de session au moins une de ces 10 machines donc j'ai créé un fichier ou je groupe des postes par rapport a leur proximité avec une de ces machines.
j'espère que c'est plus clair comme ça :)
bon en fait il s'agit script d'ouverture de session en vbs que je voudrais modifier.
je me forme sous Linux en ce moment donc je voudrais faire la modif en shell, ça pourrait se faire autrement mais bon, je joins l'utile a l'agréable :)
donc dans le fichier en question qui a le nom d'inventaire d'un poste de travail du type : PC123456.vbs
dans ce fichier ce que je veux ajouter c'est une ligne à la fin pour monter une imprimante automatiquement.
la ligne c'est :
WshNetwork.AddWindowsPrinterConnection "\\serveur\imprimante"
donc j'ai un fichier avec dedans tout les scripts qui doivent récupérer par exemple l'imprimante IMP12345
donc la structure c'est un tableau une colonne avec dans chaque ligne les noms de scripts concernés, sans le chemin absolu, juste le nom du script.
je peux aussi changé ça et tout mettre dans un document d'un autre format si c'est la bonne méthode.
donc si PCXXXXXX.vbs fait partie de la liste1 j'ajoute WshNetwork.AddWindowsPrinterConnection "\\serveur\IMP123456"
s'il fait partie de la liste 2 j'ajoute WshNetwork.AddWindowsPrinterConnection "\\serveur\IMP654321" etc...
il y a 10 nouvelles machines et chaque pc doit avoir a l'ouverture de session au moins une de ces 10 machines donc j'ai créé un fichier ou je groupe des postes par rapport a leur proximité avec une de ces machines.
j'espère que c'est plus clair comme ça :)
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
10 sept. 2008 à 10:51
10 sept. 2008 à 10:51
En partant de ça :
donc si PCXXXXXX.vbs fait partie de la liste1 j'ajoute WshNetwork.AddWindowsPrinterConnection "\\serveur\IMP123456"
et en supposant que chaque liste (matrice) est un fichier différent, une solution serait de passer par une instruction "case ... esac".
A 1ère vue l'idée serait de lister le répertoire où se trouve les fichiers (1200) avec une boucle "for" :
A l'intérieur de cette boucle, récupérer la liste à laquelle appartient le fichier dans une variable (en supposant que les listes soit nommées liste1.txt, liste2.txt,etc.) :
Puis en fonction de cette variable, appliquée la commande correspondant à l'instruction du case :
Attends voir quand même d'autres avis ;-))
donc si PCXXXXXX.vbs fait partie de la liste1 j'ajoute WshNetwork.AddWindowsPrinterConnection "\\serveur\IMP123456"
et en supposant que chaque liste (matrice) est un fichier différent, une solution serait de passer par une instruction "case ... esac".
A 1ère vue l'idée serait de lister le répertoire où se trouve les fichiers (1200) avec une boucle "for" :
for fich in *; do ... ... done
A l'intérieur de cette boucle, récupérer la liste à laquelle appartient le fichier dans une variable (en supposant que les listes soit nommées liste1.txt, liste2.txt,etc.) :
result=$(grep -l 'nomfichier' liste*)
Puis en fonction de cette variable, appliquée la commande correspondant à l'instruction du case :
case "$result" in list1) echo "shNetwork.AddWindowsPrinterConnection "\\serveur\imprimante1" >> $fich ;; list2) echo "shNetwork.AddWindowsPrinterConnection "\\serveur\imprimante2" >> $fich ;; ... ... list10) echo "shNetwork.AddWindowsPrinterConnection "\\serveur\imprimante10" >> $fich ;; esacN'ayant pas tous les éléments en main et ne pouvant pas tester, je ne peux garantir que le résultat sera bon, mais d'après tes explications ça m'a l'air de correspondre.
Attends voir quand même d'autres avis ;-))
asevere
Messages postés
13084
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
3 février 2022
426
10 sept. 2008 à 11:09
10 sept. 2008 à 11:09
Heu...
Moi je dirais que comme tu as n tableaux contenant les fichiers et que tu sais quelle modif correspond à quel tableau, il faut trouver un moyen de parser ces tableaux
Eventuellement un export CSV, une fois que tu as 10 fichiers CSV, que tu sais quelle modification est à associer à quel fichier, tu n'as plus qu'à les parser comme suit
Lire Fichier_ajout_imprimante
Trouver le fichier de la machine
Modifier le fichier de la machine
et ainsi de suite, ça me parait plus simple que de trouver un fichier, voir s'il existe dans une des liste, et le modifier alors en conséquences...
++
Moi je dirais que comme tu as n tableaux contenant les fichiers et que tu sais quelle modif correspond à quel tableau, il faut trouver un moyen de parser ces tableaux
Eventuellement un export CSV, une fois que tu as 10 fichiers CSV, que tu sais quelle modification est à associer à quel fichier, tu n'as plus qu'à les parser comme suit
Lire Fichier_ajout_imprimante
Trouver le fichier de la machine
Modifier le fichier de la machine
et ainsi de suite, ça me parait plus simple que de trouver un fichier, voir s'il existe dans une des liste, et le modifier alors en conséquences...
++
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
10 sept. 2008 à 11:18
10 sept. 2008 à 11:18
Ben moi je suis comme notre fruit bien aimé : UN GROS BOURRIN ;-DDD