Ich arbeite an folgenden Skript, das versucht, eine Textdatei zu lesen, und dann einen Algorithmus mit den gesammelten Daten ausführen. Der Algorithmus muss auf jede Datei im aktuellen Ordner angewendet werden, sodass es zwei Hauptschleifen gibt.PowerShell-Skript zum Parsen von Dateien aus dem Stammordner
Loop 1 ist für Dateien im Ordner.
Schleife 2 ist für die im Algorithmus verwendeten Textzeileneinträge.
Schleife 3 ist für den Algorithmus selbst.
#$path = (Get-Item -Path ".\" -Verbose).FullName
$path = split-path -parent $MyInvocation.MyCommand.Definition
$files = Get-ChildItem "$path\test" -r # root path $PSScriptRoot
#echo $path
#echo $files
#echo $files.Count
ForEach ($file in $files){
echo "the value of i is" $i
#echo $file.FullName
#iterate through files from the current folder.
$data = Get-Content -Path $files.FullName
#echo "$data"
# parse DisabledFeatures.txt file as array of strings (1 string per line of the file)
$feature = Get-Content "$path\Disabled_Features.txt"
#echo $feature.Count
#iterate for each string entry in $feature array (read from txt file)
for($counter=0; $counter -lt $feature.Count; $counter++){
#retrieve array value to use it in the main algorythm
$groupID = $feature[$counter]
echo $groupID
$data | ForEach-Object -Begin { $ignore = $false; $levels = 0 } -Process {
#Start ignoring text after we've found the trigger
if($_ -match "^#ifdef $groupID") {
$ignore = $true
ECHO "TRUE ifdef feature"
}
#Track nested groups
elseif($ignore) {
if ($_ -match '^#ifdef') {
$levels++
echo "levels++"
}
elseif ($_ -match '#endif') {
if($levels -ge 1) { $levels-- }
#If no nesting, we've hit the end of our targeted group. Stop ignoring
else { $ignore = $false }
echo "stop ignoring"
}
}
#Write line
else { $_ }
echo "write line"
}
}
}
Bearbeiten: Skript aktualisiert.
'$ i -lt' und' $ counter -lt' – TessellatingHeckler
"Es scheint nicht zu arbeiten" .. * Wie? * Welches Ergebnis erwartest du? Welches Ergebnis bekommst du eigentlich? –
aktualisiert das Skript. Es ist beabsichtigt, Absätze zu löschen, die mit dem #ifdef -Feature beginnen und mit dem entsprechenden #endif enden. Also #ifdef #endif Absätze dazwischen ist egal – Jackson