我编写了这个 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。
我的脚本有什么问题?