PowerShell 输出说“不”

PowerShell 输出说“不”

我编写了这个 PowerShell 脚本来根据以下模型读取两个大文本文件:

ID“文本”,脚本读取两个文本文件并对它们进行比较,然后告诉我该行是否存在于两个文本文件中。

但是,每次我启动脚本时无论我做什么,脚本都只是说“不”:我认为错误信息

这是我写的脚本:

Add-Type -AssemblyName System.Windows.Forms

# Ouvrir une boîte de dialogue pour choisir le premier fichier
$openFileDialog1 = New-Object System.Windows.Forms.OpenFileDialog
$openFileDialog1.InitialDirectory = "C:\"
$openFileDialog1.Filter = "Fichiers texte (*.txt)|*.txt"
$openFileDialog1.ShowDialog() | Out-Null
$filePath1 = $openFileDialog1.FileName

if ([string]::IsNullOrEmpty($filePath1)) {
    [System.Windows.Forms.MessageBox]::Show("Aucun fichier choisi pour le premier fichier, arrêt du script.")
    return
}

# Ouvrir une boîte de dialogue pour choisir le deuxième fichier
$openFileDialog2 = New-Object System.Windows.Forms.OpenFileDialog
$openFileDialog2.InitialDirectory = "C:\"
$openFileDialog2.Filter = "Fichiers texte (*.txt)|*.txt"
$openFileDialog2.ShowDialog() | Out-Null
$filePath2 = $openFileDialog2.FileName

if ([string]::IsNullOrEmpty($filePath2)) {
    [System.Windows.Forms.MessageBox]::Show("Aucun fichier choisi pour le deuxième fichier, arrêt du script.")
    return
}

# Lire les fichiers texte ligne par ligne et ignorer les commentaires
$file1Content = Get-Content -Path $filePath1 | Where-Object { $_ -notmatch '^\s*//' }
$file2Content = Get-Content -Path $filePath2 | Where-Object { $_ -notmatch '^\s*//' }

# Initialiser une variable pour stocker les résultats
$results = @()

# Comparer chaque ligne des deux fichiers
foreach ($line1 in $file1Content) {
    $id1, $text1 = $line1 -split ' ', 2
    $found = $false

    foreach ($line2 in $file2Content) {
        $id2, $text2 = $line2 -split ' ', 2

        if ($id1 -eq $id2) {
            $found = $true
            if ($text1 -eq $text2) {
                $results += "${id1}: Identique"
            } else {
                $results += "${id1}: Différent"
            }
            break
        }
    }

    if (-not $found) {
        $results += "${id1}: Non trouvé dans le deuxième fichier"
    }
}

# Vérifier les IDs du deuxième fichier qui ne sont pas dans le premier fichier
foreach ($line2 in $file2Content) {
    $id2, $text2 = $line2 -split ' ', 2

    if ($file1Content -notcontains $line2) {
        $results += "${id2}: Non trouvé dans le premier fichier"
    }
}

# Convertir les résultats en une seule chaîne de caractères
$resultsString = [string]::Join("`r`n", $results)

# Afficher une boîte de dialogue avec les résultats
[System.Windows.Forms.MessageBox]::Show($resultsString, "Résultats de la comparaison", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Information)

写入输出和写入主机调试没有提供任何有用的信息。

我目前使用的是 Windows 10 21H2 版本和最新版本的 PowerShell。

我的脚本有什么问题?

相关内容