■やりたい事
$CHECKJANLEと$CHECKMENUを文字列として連結し、
出来た文字列がfolderpath.txtに存在していれば "文字列 ○" 存在していなければ"文字列 ×"
を表示させたい。
$CHECKJANLE = "和食","洋食`","中華"
$CHECKMENU = "てんぷら","飛行機","すきやき","ステーキ","北海道","ラーメン"
folderpathの内容は以下です。(1行毎に改行して記載されている事とします)
和食\てんぷら
和食\とんかつ
和食\すきやき
洋食\ステーキ
中華\チャーハン
中華\ラーメン
■試したコード
$PATH = "C:\work\folderpath.txt"
$CHECKJANLE = "和食","洋食`","中華"
$CHECKMENU = "てんぷら","飛行機","すきやき","ステーキ","アーティスト","ラーメン"
for($i = 0; $i -lt $CHECKJANLE.Count; $i++){
for($j = 0; $j -lt $CHECKMENU.Count; $j++){
if(Select-String -Pattern "$($CHECKJANLE[$i])$($CHECKMENU[$j])" -Path $PATH -Encoding default){
Write-Output "$($CHECKJANLE[$i])$($CHECKMENU[$j]) ○"
}else{
Write-Output "$($CHECKJANLE[$i])$($CHECKMENU[$j]) ×"
}
}
}
■発生しているエラー
Select-String : 解析中 "和食\てんぷら" - 認識されないエスケープ シーケンス \て です。
発生場所 行:3 文字:25
-
if(Select-String <<<< -Pattern "$($CHECKJANLE[$i])$($CHECKMENU[$j])" -Path $PATH){
- CategoryInfo : NotSpecified: (:) [Select-String]、ArgumentException
- FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.SelectStringCommand
Select-String : 解析中 "和食\とんかつ" - 認識されないエスケープ シーケンス \と です。
発生場所 行:3 文字:25
-
if(Select-String <<<< -Pattern "$($CHECKJANLE[$i])$($CHECKMENU[$j])" -Path $PATH){
- CategoryInfo : NotSpecified: (:) [Select-String]、ArgumentException
- FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.SelectStringCommand
というのが中華\ラーメンの組み合わせまで18個続いて出ています。
■試した事
folderpath.txtに記載している文字列と、$CHECKJANLEに格納する文字列を両方とも
「\」(円マーク)を「-」に変えると想定通りの結果になることから、「\」(円マーク)を
含む文字列の展開が上手く出来ていないのではと思っています。
しかし、ネットで調べながら色々試しましたがどうしても上手くいかなかったので
どなたか詳しい方ご教授お願いします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/19 16:57
2019/04/19 21:51
2019/04/20 06:29