PowerShell脚本问题:验证当前德语星期是否在指定文件中
PowerShell德语星期比对失效修复及批量格式转换方案
一、比对失效的直接原因及修复
你的第二段代码存在变量名拼写错误,导致读取文件后的列表为空,直接引发比对失败:
- 错误行:
$wochentageListe = $wochentageInDatei -split ',' - 正确写法:
$wochentageListe = $wochentagAusDatei -split ','(前面读取文件的变量是$wochentagAusDatei,而非未定义的$wochentageInDatei)
除此之外,还需处理文件中可能存在的空格问题(比如逗号后带空格,如Montag, Dienstag),split后的元素会包含前导空格,和$deutscherWochentag的无空格格式不匹配,需用Trim()统一清理:
修正后的完整代码:
# 获取当前德语星期 $deutscheKultur = New-Object System.Globalization.CultureInfo "de-DE" $heute = Get-Date $deutscherWochentag = $heute.ToString("dddd", $deutscheKultur) Write-Host "Der heutige Wochentag ist: $deutscherWochentag" # 文件路径 $dateiPfad = "D:\Scriptz\RunDay.txt" # 读取文件内容并处理:分割后去除每个元素的前后空格 $inhalt = Get-Content -Path $dateiPfad $wochentageListe = $inhalt -split ',' | ForEach-Object { $_.Trim() } # 执行比对 if ($wochentageListe -contains $deutscherWochentag) { Write-Host "Heute ist $deutscherWochentag. Das Skript wird ausgeführt." } else { Write-Host "Heute ist nicht $deutscherWochentag. Das Skript wird nicht ausgeführt." }
二、批量转换文件中星期格式的方法
如果你的文件中存储的不是标准德语全称星期(比如缩写、英文或其他格式),可以批量转换为标准德语星期格式,以下是两种常见场景的示例:
场景1:将英文星期批量转为德语全称
假设RunDay.txt内容为:Monday,Tuesday,Wednesday,转换代码:
$dateiPfad = "D:\Scriptz\RunDay.txt" $deutscheKultur = New-Object System.Globalization.CultureInfo "de-DE" $englischeKultur = New-Object System.Globalization.CultureInfo "en-US" # 读取并转换每个星期名称 $konvertierteWochentage = Get-Content -Path $dateiPfad -Raw | ForEach-Object { $_ -split ',' } | ForEach-Object { $tag = $_ # 将英文星期转为DateTime对象,再转为德语全称 [DateTime]::ParseExact($tag.Trim(), "dddd", $englischeKultur).ToString("dddd", $deutscheKultur) } # 将转换后的内容写回文件(覆盖原内容,建议先备份) $konvertierteWochentage -join ',' | Set-Content -Path $dateiPfad
场景2:将德语缩写转为全称
假设RunDay.txt内容为:Mo,Di,Mi,转换代码:
$dateiPfad = "D:\Scriptz\RunDay.txt" $deutscheKultur = New-Object System.Globalization.CultureInfo "de-DE" $konvertierteWochentage = Get-Content -Path $dateiPfad -Raw | ForEach-Object { $_ -split ',' } | ForEach-Object { $tag = $_ # 将德语缩写转为DateTime对象,再输出全称 [DateTime]::ParseExact($tag.Trim(), "ddd", $deutscheKultur).ToString("dddd", $deutscheKultur) } $konvertierteWochentage -join ',' | Set-Content -Path $dateiPfad
内容的提问来源于stack exchange,提问作者gothsome
相关产品推荐
相关产品推荐

