Freigeben über


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=