我目前正在研究可以比较2个或更多csv文件的Powershell脚本。
到目前为止,比较部分已全部正常工作。现在,我需要用户能够说出他们想在选择的文件之间比较哪个列。
我让用户使用以下命令选择文件:
do{
$f1 = Read-Host -Prompt "Selectionez le $i fichier a comparer (mettez le .csv)"
$g1 = Get-Variable -Name $f1
$h1 = $g1.Name
if ($f1 -like $h1) {
echo "Fichier ok"
Start-Sleep -Seconds 1
cls
break
}
echo "Ce fichier n'existe pas"
} while (1)
我为每个文件执行此操作,并事先检查文件是否存在于当前目录中。
这是从用户那里读取他们想要在所选文件之间进行比较的列名的代码。
$nb = Read-Host -Prompt "How many column would you like to compare ?"
for ($i=0;$i -lt $nb;$i++) {
Clear-Variable -Name col$i -ErrorAction SilentlyContinue
Remove-Variable -Name col$i -ErrorAction SilentlyContinue
New-Variable -Name col$i -Value (Read-Host -Prompt "Name of the $i column")
Start-Sleep -Seconds 1
$head = Get-Variable -Name col$i -ValueOnly
$array += "$head"
$header = "$array[$i]"
}
我的问题是,为了解析csvs的文件,我需要获得如下格式的循环字符串的输出:
col0.Value;col1.Value;col3.Value...
此输出将作为我编写的函数的参数传递,该函数将使列的位置在脚本的比较部分不受影响。
基本上,只要至少2个不同的csv文件中的两个或更多列匹配,就将它们进行比较。
希望这很清楚。