En réponse à Stéphane Papp
Mon collègue, Stéphane Papp, consultant principal dans le domaine du management et de la sécurité chez Microsoft France, m'a lancé un petit défi sur son blog dans le billet suivant : blogs.msdn.com/spapp/archive/2007/06/29/int-grer-les-pilotes-de-contr-leur-disque-dans-bdd-2007.aspx. J'ai tenté de mettre un commentaire sur son billet, mais sans succès, alors j'ai décidé de blogger la réponse J
Petit rappel, le but est de passer de ça
id ="PCI\VEN_8086&DEV_2822&CC_0104","iaStor"
à ça
PCI\VEN_8086&DEV_2822&CC_0104="iaStor"
Pour chaque ligne d'un fichier txtsetup.sif. Dans son billet, Stéphane propose une solution avec Excel qu'il maitrise mieux que PowerShell, et suppose que je trouverai bien une ligne de commande PowerShell pour le faire. Comme j'adore les petits défis dans le genre, je vous livre la solution J Prenons donc un fichier txtsetup.sif avec le contenu suivant :
id ="PCI\VEN_8086&DEV_2822&CC_0104","iaStor"
id ="PCI\VEN_8086&DEV_2822&CC_0105","iaStor"
id ="PCI\VEN_8086&DEV_2822&CC_0106","iaStor"
id ="PCI\VEN_8086&DEV_2822&CC_0107","iaStor"
Voici une commande PowerShell permettant de faire la transformation demandée (j'imagine qu'il doit y en avoir d'autresJ)
get-content txtsetup.sif | % {$_.Split('"')[1] + "=""" + $_.Split('"')[3] + """"}
et le résultat :
PCI\VEN_8086&DEV_2822&CC_0104="iaStor"
PCI\VEN_8086&DEV_2822&CC_0105="iaStor"
PCI\VEN_8086&DEV_2822&CC_0106="iaStor"
PCI\VEN_8086&DEV_2822&CC_0107="iaStor"
La solution avec Excel :
=STXT(A1;TROUVE(CAR(34);A1)+1;TROUVE(CAR(34)&","&CAR(34);A1)-TROUVE(CAR(34);A1)-1)&"="&CAR(34)&STXT(A1;TROUVE(CAR(34)&","&CAR(34);A1)+3;NBCAR(A1)-TROUVE(CAR(34)&","&CAR(34);A1)-3)&CAR(34)
Qui a dit que PowerShell c'était compliqué ? J
Comments
Anonymous
July 16, 2007
Moi, je fais ça avec Visual Studio et une petite expression régulière ;-) CTRL+H Find what: id ="{PCI.@}",{.+} Replace With: 1=2 Mais c'est tricher, j'imagine ?Anonymous
July 17, 2007
Non pas du tout, d'ailleurs j'ai bien précisé qu'il s'agissait d'une des façons de faire :) Stéphane me demandait indirectement via son blog comment faire avec powershell tout simplement :) disons qu'Excel et Visual Studio ne sont pas des outils gratuits comme powershell et que je pense que la manip doit etre plus longue en les utilisant.Anonymous
July 19, 2007
Au bon vieux temps avec VI ca donnait :1,$s/^.* ="(.*)",/1=