バッチファイルで「ファイル"echo.sql"をオープンできません。」というエラーが発生する
「ファイル"echo.sql"をオープンできません。」
Windows OS上でspoolコマンドを実行するバッチを作成しています。
想定通りの挙動をしない為助言を頂けましたら幸いです。
発生している問題・エラー
以下のようなエラーメッセージが出てしまいます。
ファイル"echo.sql"をオープンできません。
該当するソースコード
batファイルの中身は以下の通りです。
@ECHO OFF
set SQL_Dir=C:\TEMP\SQLバッチ\
SQLPLUS ●●●●/●●●●@●●●● @"%SQL_Dir%select_商品.SQL"
exit
SQLの実行結果自体は正しく取れているので
SQLPLUSに指定しているDBへのログイン情報には問題はない認識です。
自分で試したこと
ご助言を頂き、引数に正しく値が代入されているか試したのですが、
変数「SQL_Dir」には「C:\TEMP\SQLバッチ\」が代入されていることと、
「@%SQL_Dir%select_商品.SQL」では意図通りのパスが引き渡されていることを確認できました。
spoolコマンドを用いる際のSQLの書き方に問題があるのかなとも思ったのですが、
インターネット上に特に注意事項などの記事が見当たらず、行き詰ってしまいました。
何か原因などお分かりになる方がいらっしゃいましたらご教授いただけましたら幸いです。
よろしくお願いいたします。
2Answer
Comments
@CoconaBayashi
Questioner御回答ありがとうございます。
@ECHO ON で実行してみました。
確かに効いていることが分かりました。
勉強不足ですみません。加えて、echo %SQL_Dir% も実行してみて
意図した通りの値が引数に代入されていることが確認できたのですが、
やはり「ファイル"echo.sql"をオープンできません。」のエラーメッセージの謎が解けません…
SQLの出力結果は正しいようなのでこれはしょうがないものとしてスルーするしかないのですかね…
@ECHO OFF
はコマンドの表示をOFF
にするオプションなので、外部プログラムの実行結果を出力する内容まで関与しません。
@ECHO OFF
の行を削除することで表示の違いを得られると思います。
またファイルパスはクオートで囲むのが基本です。
SQLPLUS ●●●●/●●●●@●●●● @"%SQL_Dir%select_商品.SQL"
ちなみにchcp
は理解していないと予期せぬ問題が発生するため非推奨です。
バッチのエンコードがASCII或いはShift-JISであれば適切に出力されます。
Comments
@CoconaBayashi
Questioner御回答ありがとうございます。
@ECHO OFF/OFF の違い、理解できました。
ありがとうございます。頂いた助言を受けまして、ファイルパスをクオートで囲ってみたのですが
「ファイル"echo.sql"をオープンできません。」のエラーメッセージはクリアできませんでした。
バッチファイルの中には投稿で書いたコード以外は特に何も書いておりませんので
SQLファイルの中身側に問題があるということでしょうかね…。もしかするとSQLファイルの中身に
@echo.sql
のような記述があり、フルパスではないから解釈できない可能性もありそうです。それか
SQLPLUS
の前行にCD %SQL_Dir%
を追加し、カレントディレクトリを変更することで変化あるかも確認した方がよいかもしれません。@CoconaBayashi
QuestionerSQLファイルの中身に@echo.sqlのような記述があり、フルパスではないから解釈できない可能性もありそうです。
→こちらが原因でした!
大変助かりました。お礼が遅くなってしまい申し訳ありません。
ありがとうございました。