inputfilenameコマンドの質問No.00227
たけ さん 99/09/17 17:47
 
みなさん、はじめまして。(^^)/
(2時間前の投稿は誤りが発覚したので削除しました。^^;;)

inputfilenameコマンド実行時のファイルの保存先について教えて下さい。
次のスクリプトでファイル名を入力しようとすると、毎回 C:\HIDETERM\
が保存先のデフォルトになってしまいます。
例えば、C:\WINDOWS\デスクトップ\ をデフォルトにして、ついでに
保存先も自由に選択できるようにするにはどうしたらよいでしょうか。

------------ 以下スクリプト ----------------
START:
;**** log開始 ****
LOG "C:\WINDOWS\デスクトップ\TEST.LOG", create, noncontrolcode

(途中略)

;**** 通信終了後の処理 ****
log
question "ログをファイルにコピーしますか?"
if( yes ) call LogCopy1
if( no ) call HideEnd
return

;**** LOGをコピー ****
;LogCopy1 でファイル名を入力、上書きチェックを行い、LogCopy2 で実際にコピー
作業を指示。
LogCopy1:
inputfilename "保存先を指定し、ファイル名を入力してください。",#filename
if ( not existfile (#filename)) goto LogCopy2
question "指定したファイルは存在します。ファイルを上書きしますか?"
if( yes ) goto LogCopy2
if( no ) goto LogCopy1
endif
endif

LogCopy2:
copyfile "C:\WINDOWS\デスクトップ\TEST.LOG", #filename

------ 以下スクリプト省略 ----------

よろしくお願いしま〜す。


[ ]
RE:00227 inputfilenameコマンドの質問No.00228
秀まるお さん 99/09/17 18:46
 
    inputfilenameの直前にchdirすればいいと思います。

   chdir "c:\windows\デスクトップ"
   intpufilename ....
   restoredir

 ってな具合でどうでしょ?

 (手元ではテストしてませんが)


[ ]
RE:00228 inputfilenameコマンドの質問No.00229
たけ さん 99/09/20 11:45
 
>    inputfilenameの直前にchdirすればいいと思います。
>
>   chdir "c:\windows\デスクトップ"
>   intpufilename ....
>   restoredir
>
> ってな具合でどうでしょ?
>
> (手元ではテストしてませんが)
>
existfile で上書きチェックしているのですが、「上書きしない」
にすると”カレントディレクトリの変更に失敗しました”と怒られ
てしまいます。
 で、 restoredir もどこで指定してよいやらわかりません。

[ ]
RE:00229 inputfilenameコマンドの質問No.00230
かずや さん 99/09/20 23:20
 
>>   chdir "c:\windows\デスクトップ"
>existfile で上書きチェックしているのですが、「上書きしない」
>にすると”カレントディレクトリの変更に失敗しました”と怒られ
>てしまいます。
> で、 restoredir もどこで指定してよいやらわかりません。
"デスクトップ"が全角だからでは?(そんなわけないか(^-^;)

状況が分からないので 今いち把握できませんが
たけさんはWIN95ですか?WIN98ですか?
たしか、WIN95では半角カナで、WIN98では
全角カナじゃなかったかな?

WIN98にも対応されるならレジストリから
デスクトップフォルダを取得する方が良いのでは?

あと、restoredirはchdirを解除する(戻す)コマンドなので
chdirで必要な処理が終わったら使います

[ ]
RE:00230 inputfilenameコマンドの質問No.00231
秀まるお さん 99/09/21 11:13
 
 すみません。言い忘れてましたが、"デスクトップ"の部分は半角文字で書かないと
いけないと思います。(Win98の場合でも)

 ここの会議室は半角文字で書き込みできないはずなので、全角で書いてしまいまし
た。

 こちらで以下のスクリプトを作ってテストした限りは正しく動作しました。(デス
クトップの文字の部分は半角です。

    chdir "c:\windows\デスクトップ"
    inputfilename "テスト", #a
    restoredir
    message #a

 デスクトップフォルダの名前をレジストリから取り出すのなら、

 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell
 Folders\Desktop

 の値を取り出せばいいと思いますが、とりあえずは"c:\windows\デスクトップ"固
定で正しく動作することを確認してからがいいと思います。

[ ]
RE:00230 inputfilenameコマンドの質問No.00234
たけ さん 99/09/22 09:26
 
アドバイスありがとうございます。
最初、ドライブ名を変数で指定していたのですが、ファイルの存在確認
でぐるぐる回っているうちに、何故かドライブ変更がうまくいかなかっ
たみたいです。
-------------------------
LogCopy1:
chdir #ORG_DRV + "\windows\デスクトップ"
;NEC98端末のみ、ドライブは永久的変数に設定する。
;;;; %IR_MNGS_DRV = "A" と設定した.
; %IR_MNGS_DRV が設定されている場合
if( %IR_MNGS_DRV != "" )
#ORG_DRV = %IR_MNGS_DRV
; %IR_MNGS_DRV が設定されていない場合
else
#ORG_DRV = "C"
endif

inputfilename "保存先を指定し、ファイル名を入力してください。", #filename
restoredir

;【ファイルの存在確認後、上書き禁止にする場合】
if ( not existfile (#filename)) goto LogCopy2
else message "指定したファイルは存在します。"
call LogCopy1
-------------------------
で、
chdir "C:\windows\デスクトップ
としたらexistfileでLogCopy1に戻ってもドライブ名の変更は
OKになりました。

NEC98用スクリプトとdos-v用スクリプトの2つを作らなくて
よいように−と思っていたのですが、よくわからないので、
結局2つ作ることにしました。
お騒がせいたしました。

[ ]