我的代码不正常,它应该采取浮动"这个"或"那"并确定它是否与上述单词之一相匹配,但它目前在第一个if
语句处停止并且说所有单词都与之匹配,但他们肯定不会这样做。我已经尝试-match
,-eq
,-like
....我放了一个" x"在错误的线前面。这只是一个更大代码的短线。 (BRC - 批量重命名实用程序(命令行))
if ($this){
#exceptions
if ($that -like "Drücker" -or "Biegekern" -or "Führung" -or "Pressentisch"){Write-Host ("x($i/$rowMax) Replacing $that with $this")
.\BRC32 /DIR:$directory /INCLR /RECURSIVE /quiet /IGNOREFILEX /REPLACECI:"3_$that":"3_$this ($that)" /REPLACECI:_Dr.Pos.:"_$this ($that)_Pos_" /replaceci:" ":_ /execute
}
elseif ($that -like "Halteplatte" -or "Oberteil" -or "Unterteil" -or "Schieber"){Write-Host ("($i/$rowMax) Replacing $that with $this")
.\BRC32 /DIR:$directory /INCLR /RECURSIVE /quiet /IGNOREFILEX /REPLACECI:"3_$that":"3_$this ($that)" /replaceci:" ":_ /execute
.\BRC32 /DIR:$directory /INCLR /RECURSIVE /quiet /IGNOREFILEX /REPLACECI:"2_$that":"2_$this ($that)" /replaceci:" ":_ /execute
}
elseif ($that -like "Schnitt"){Write-Host ("($i/$rowMax) Replacing $that with $this")
.\BRC32 /DIR:$directory /INCLR /RECURSIVE /quiet /IGNOREFILEX /REPLACECI:"0_$that":"0_$this ($that)" /replaceci:" ":_ /execute
}
elseif ($that -like "Zusatzführung"){Write-Host ("($i/$rowMax) Replacing $that with $this")
.\BRC32 /DIR:$directory /INCLR /RECURSIVE /quiet /IGNOREFILEX /REPLACECI:"2_$that":"2_$this ($that)" /replaceci:" ":_ /execute
}
#main renaming function
elseif ($that){
Write-Host ("($i/$rowMax) Replacing $that with $this")
.\BRC32 /DIR:$directory /INCLR /RECURSIVE /quiet /IGNOREFILEX /REPLACECI:"_$that":"_$this ($that)" /replaceci:" ":_ /execute
}
}
elseif ($that){
Write-Host ("($i/$rowMax) Blank-Skip")
$blanks=$blanks+1
}
else {
$i=$rowMax
}
答案 0 :(得分:2)
$that
的多个标准可能更适合这样的事情。具有相同逻辑的简单正则表达式
if ($that -match "(Drücker|Biegekern|Führung|Pressentisch)"){
Do-Stuff()
}
如果你对比赛的反应不同,那么开关会更合适。
switch ($that)
{
Drücker {"wo sind meine Hosen."}
Biegekern {"meinem Hologramm ist voller Ohren."}
Führung {"mein Deutsch ist nicht gut."}
Pressentisch {"Zwei."}
default {"keine Ahnung."}
}
可以找到其他更复杂的切换示例here。使用上述两个片段的示例就是这个
$that = "Zusatzführung"
switch -Regex ($that)
{
"^(Drücker|Biegekern|Führung|Pressentisch)$" {"wo sind meine Hosen."}
"^(Halteplatte|Oberteil|Unterteil|Schieber)$" {"meinem Hologramm ist voller Ohren."}
"Schnitt" {"mein Deutsch ist nicht gut."}
"Zusatzführung" {"Zwei."}
default {"keine Ahnung."}
}
在这种情况下, $that
将匹配第一个条目。如果您正在寻找完整的单词匹配,您可以像我一样使用^$
。您还可以使用break
关键字来阻止多个条目匹配。
....
"(Drücker|Biegekern|Führung|Pressentisch)" {"wo sind meine Hosen."; Break}
"Zusatzführung" {"Zwei."}
....
使用与上述行相同的$that
只会匹配第一行。然后在输出线之后我们退出开关。
答案 1 :(得分:0)
简单地说,要完成这项工作,你需要重写 - 和 - 或。我只是一个dingus
if ($that -like "Drücker" -or $that -like "Biegekern" -or $that -like "Führung" -or $that -like "Pressentisch"){Write-Host ("x($i/$rowMax) Replacing $that with $this")
.\BRC32 /DIR:$directory /INCLR /RECURSIVE /quiet /IGNOREFILEX /REPLACECI:"3_$that":"3_$this ($that)" /REPLACECI:_Dr.Pos.:"_$this ($that)_Pos_" /replaceci:" ":_ /execute
}