こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SPOOL出力先のフォルダにSpaceがある時

SQL*PlusでSPOOLコマンドを使用してログファイルを出力する場合に、
フォルダ名を指定したいのですが、フォルダ名にSpaceがある時に
エラーになってしまいます。
(エラーがでる例)
SQL>SPOOL C:\Documents and Settings\All Users\デスクトップ\TEST.log
SP2-0333: 不正なスプール・ファイル名: "C:\Documents and Settings\All Users\デスクトップ"(不正文字: ' ')

フォルダ名とファイル名全体を、''で囲んでも同じエラーがでます。

よろしくお願いします。

投稿日時 - 2006-11-27 10:24:49

QNo.2565174

困ってます

質問者が選んだベストアンサー

8.3形式を利用したらできないかな?

※8.3形式について
http://e-words.jp/w/82E3E5BDA2E5BC8F.html


今気づいたんだけど、XPってフォルダのプロパティを見ても、旧形式のフォルダパスって出ないのですね。。。
http://www.atmarkit.co.jp/fwin2k/win2ktips/606dirx/dirx.html
のような方法もあるようですが、、、面倒そうなので、簡単なVBスクリプトを作ってみたので張っておきます。
応用したら、バッチの作成のスクリプトも作成できるかと思います。




もし、VBスクリプトが未経験であれば、、、、、

http://okwave.jp/qa1559190.html
の#3の手順4~6を読みながら、以下のコードを貼り付けてください。



Option Explicit

Dim objArgs

Set objArgs = WScript.Arguments
Call GetShortPath(objArgs)
Set objArgs = Nothing


Private Sub GetShortPath(arg)
Dim fsoObj
Dim fsoDir
Dim objParam

if arg.Count() < 1 Then
MsgBox "このスクリプトファイルに、任意のフォルダをドラッグしてください。"
Exit Sub
End If

Set fsoObj = CreateObject("Scripting.FileSystemObject")

'パラメータループ
For Each ObjParam in arg

'フォルダであるかをチェック
If fsoObj.FolderExists(objParam) Then

'フォルダが見つかった場合、出力を行う
Set fsoDir = fsoObj.GetFolder(objParam)
Call InputBox(fsoDir.Path, "フォルダを8.3形式に変換", fsoDir.ShortPath)

'一個だけ、処理をしたら、本メソッドは終了する
Exit Sub
End If
Next

'ここまでステップが行われた場合は、フォルダがひとつもドラッグされなかったことを意味する
MsgBox "このスクリプトは、フォルダのみに対応しています。任意のフォルダをドラッグしてください。"

End Sub

投稿日時 - 2006-11-27 19:28:08

お礼

回答ありがとうございます。

8.3形式について、回答を参考にさせて頂き、
いろいろと調べてみたところ、この方法で問題なさそうです。
丁度、VBアプリケーションから、SQLファイル作成~
SQL*Plusを直接呼び出して、SQLファイルを実行する処理を
行っていましたので、SQLファイルを作成する直前に8.3形式の
フォルダ名を取得できるので、問題も発生しないと思います。

本当に、ありがとうございました。

投稿日時 - 2006-11-28 15:49:46

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

もう解決かもしれませんが
sqlplusを実行する前に
cdコマンドでカレントディレクトリを変更してみては?

cd "C:\Documents and Settings\All Users\デスクトップ\"
sqlplus /nolog
connect ユーザ/パスワード@接続文字列
spool TEST.log

投稿日時 - 2006-11-28 12:17:56

お礼

回答ありがとうございます。

今回は、1050YENさんの方式でやってみようと思います。
回答は、今後の参考にさせて頂きます。
ありがとうございました。

投稿日時 - 2006-11-28 16:04:11

ANo.3

ファイル名をシングルクオーテーションで囲うと、動作しませんか。

投稿日時 - 2006-11-27 21:47:30

補足

質問が見にくくて申し訳ありません。
最後から2行目の '' はシングルクォーテションを2つ並べています。

シングルクォーテションで囲ってもやはり同じエラーがでます。
念の為、ダブルクォーテションも試しましたが、同じでした。

投稿日時 - 2006-11-28 15:50:23

仕様上無理なモノは無理です。

SUBST等で仮想ドライブへマウントするなど代替え策を考えるしかありません。

投稿日時 - 2006-11-27 15:34:40

お礼

SUBSTを試して問題なく出力できることを確認しました。
ただ、エクスプローラなどにも仮想ドライブが表示されてしまうので、
今回は、1050YENさんの方式でやってみようと思います。

回答ありがとうございました。

投稿日時 - 2006-11-28 15:36:29

あなたにオススメの質問