【VBScript(WSH)】「終了していない文字列型の定数です」エラーの対処方法
- 2020.10.20
- WSH/VBS備忘録
- VBScript, Windows10, WindowsServer, WSH, エラー改善, スクリプト備忘録, 自動処理, 自動化
【VBScript(WSH)】「終了していない文字列型の定数です」エラーの対処方法
このエラーの場合見るべき場所は次の3点です。
- ファイルのエンコードが間違えていないか
- 命令内のテキストがしっかりと閉じられているか
- 変数を含めた文字列の『 ” 』の書き方はあっているか
ファイルのエンコードが間違えていないか
WEBサイドを主戦場としているとテキストエディタをUTF-8で保存してしまうことがあります。
しかし、VBScriptで組む場合、IncludeしたファイルもShift_JISである必要があります。
エンコードが違うと文字化けしている状態でIncludeされるのでエラーが吐き出されます。
命令内のテキストがしっかりと閉じられているか
文字列の閉じ忘れでも同様のエラーが発生します。
このエラーの原因として可能性は一番高いかもしれません。
見落としがちになるのはIncludeを利用している場合です。
エラーはIncludeの読込元で発生するので複数のファイルをIncludeしている場合『どのファイルか』はメッセージに表示されません。たまに「閉じた後に”が付いていた」なんてこともあります。
コピペでファイルを作った時なんてこう言ったケースが増えてきますので気を付けましょう。
変数を含めた文字列の『 ” 』の書き方はあっているか
意外と面倒なのがコレ。
原因がダブルクォーテーションの置き方(書き方)である場合「ステートメントの末尾が不正です」というエラーが表示される事もあります。と言うよりも多分こちらの文面の方が多発していると思う。
例:SFTPのPUT文を変数を入れながら記載
1 2 |
'『FileDate_FileName』のデータを『FileName』でリモートサーバーに上げる' objShell.SendKeys """put "&FileDate&"_"&FileName&" "&FileName&"""" |
『 ” 』は文字列である事を表す為、『 ” 』そのものを表記したい場合””””と4つ並べます。
ただし、間に文字が含まれている場合(上の例の “””put ” )の時は3つ目のダブルクォーテーションが文字列として認識されるので【 “””put ” 】と表記します。
場合によってはこんな時も
純粋に文字列を計算しようとしていたりと言う事もありますが、そこら辺は「気にして」見ると思うので解決は早いです。
エラー修正に時間が掛かる時は得てして「エラーメッセージまでの道程が遠回りな時」です。
そして、同じ原因でも異なるメッセージが出てくることも「遠回りなメッセージ」の辛い所。
例えば、3項のような文字列合成を使い上記のような命令文を作成しているとき、大概は「文字化け」となり命令が実行されないはずですが、「終了していない文字列型の定数です」と言われる事もあります。
まとめ
こういったエラーの大概は自分のタイプミスが原因だったりします。
エラー調査は『思い込み』を排除して望まないとですね。
-
前の記事
SSH接続で Permission denied (publickey,gssapi-keyex,gssapi-with-mic).が出たら調べる場所 2020.10.19
-
次の記事
【Laravel】viewのBladeでif文を書くメリットと書き方 2020.10.21
コメントを残す