You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 05:34:52