Wie kann ich eine Zeichenfolge mit einem Platzhalter herausfiltern und mit einer Änderung in eine andere Textdatei ausgeben?

492
David Prentice

Ich möchte alle Treiber von Drittanbietern mithilfe von DISM von einem Windows-Image deinstallieren. Es scheint jedoch, dass es keine Platzhalterzeichen akzeptiert. Dies bedeutet, dass ich sie alle manuell deinstallieren muss, was ich vermeiden möchte. Bisher habe ich eine Liste aller Treiber in einem Tabellenformat erstellt, wie in der folgenden Abbildung dargestellt:

enter image description here

Ich habe zwei Möglichkeiten, soweit ich sehen kann:

  • Verwenden Sie das Bash-Subsystem in Windows 10
  • Verwenden Sie PowerShell.

Ich interessiere mich nur für den oem * .inf- Teil. Ich möchte jedoch nur den oem * .inf-Text herausfiltern, den ich ändern möchte:

/Driver:oem100.inf /Driver:oem101.inf /Driver:oem102.inf /Driver:oem103.inf 

usw. in einer Zeile und nicht in einem Listenformat.

Ich dachte, ich könnte das mit grep machen, aber meine Linux-Kenntnisse sind nicht so gut, wie ich es mir gewünscht hätte. Die Verwendung von PowerShell ist vielversprechend, aber ich bin noch nicht weit genug fortgeschritten. Wie kann ich das erreichen?

0

1 Antwort auf die Frage

1
LotPings

Hier ist eine PowerShell-Lösung:

$File = "Drivers.txt" $RegEx = '^oem\d.inf' $Drivers = Select-string $File -Pattern $regex|%{[string]$_.Matches} $ofs = " /Driver:" $String="/Driver:"+"$Drivers" $String | Out-File DriverString.txt 

Eine kleine Testdatei ergab dieses Ergebnis:

/Driver:oem100.inf /Driver:oem101.inf /Driver:oem102.inf /Driver:oem103.inf /Driver:oem104.inf /Driver:oem105.inf /Driver:oem106.inf /Driver:oem107.inf /Driver:oem108.inf /Driver:oem109.inf