2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PowerShellで直接実行すると問題ないのにスクリプトとして実行するとエラーが出てくる

Posted at

はじめに

この記事は新人エンジニアが遭遇したトラブルと解決方法の覚書です
「何」をしたら「どうなった」のメモで、「何故」はほとんど書いておりません(わからないので)

起こったこと

作成したスクリプトを実行
 →エラーが発生、失敗

コマンドを個別にコピペしてPowerShellに貼り付け実行
 →エラーなし、成功

新しくファイルを作成して全文コピペし、スクリプトとして実行
 →最初と同じ箇所にエラーが発生、失敗

遭遇したエラー

1. 式またはステートメントのトークンを使用できません

式またはステートメントのトークン '`r`n' を使用できません。
式またはステートメントのトークン 'yyyy/MM/dd/' を使用できません。

2. 文字列に終端記号がありません

文字列に終端記号 " がありません。

3. ステートメント ブロックまたは型定義に終わりが存在しません

ステートメント ブロックまたは型定義に終わりの '}' が存在しません。

確認したこと

・誤字脱字
・全角半角
・変なところに改行やスペースが入っていないか
 →異常なし

解決法

文字コードをBOM付きのUTF-8に変更
 →エラーが発生せずにスクリプトが正常終了

BOMとは

byte order mark:バイトオーダーマークの略
Unicodeで符号化したテキストの先頭に付与される数バイトのデータのこと

この先頭数バイトのデータで、プログラムはそのテキストデータがどの符号化形式を使っているのか判別する……らしい

なぜBOM付きに?

日本語が入っているとBOMなしは文字化けして認識されるらしい
特に日本語関係ない箇所だったし、ファイル内に日本語がないように作成しなおしても同じ状態だったんだけど……変えたら解決したからまあいいか

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?