アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつも参考にさせて頂いております。

当方環境:
OS WinXP
WSH Version 5.7

現在、WSH+JScript でFTPによるファイル転送のプログラムを作成しております。
ところが、実行させてみると、FTPコマンド実行のところでエラーが発生します。
(IPやコマンドファイルはスクリプト内で取得しています)

var ws = WScript.CreateObject("WScript.Shell");
var errCode = ws.Run("ftp -i -s:"+cf+" "+ip_add,0,true);

エラーメッセージ:「処理を待つことができません。」

MicrosoftのHPで検索したら、以下の事が分かりました。
「通常このエラーは、あるプロセス (ショートカット リンクの実行など) が完了するまでスクリプトが待機しているときに、そのプロセスが値を返さない場合に発生します。」

色々なHP見ても、大体皆さんFTPコマンドはこのように実行されているんですが、どこが違うのでしょうか?
また、このエラーへの対処方法をご存知の方がいらっしゃいましたら、
ご教授下さい。

A 回答 (3件)

Runメソッドに与えているftpを ftp.exe としてみてはいかがですか



実行時のフォルダーなどに『ftp.lnk』など予期しないファイルが存在したりしませんか
    • good
    • 0
この回答へのお礼

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

ftp.exe に変えてもやはり同じでした。

実行時のフォルダ内に「ftp」がつくファイルは存在していません。

お礼日時:2008/07/22 17:48

こんにちは。



wscript.exe test.js で試してみましたが、特にそのような状況に遭遇していません。s オプションで与えるスクリプトファイルの最後の quit コマンドを除いてしばらく待たせてから quit とマニュアルでタイプして終わらせたら、finished と表示されました。再現できる条件を共有できると別のサジェッションができるかもしれません。

■ test.js (コマンドプロンプトを表示させました)

var ws = WScript.CreateObject("WScript.Shell");
var errCode = ws.Run("ftp.exe -i -s:c:\\scr.txt", 1 , true);
WScript.echo('finished');
    • good
    • 0
この回答へのお礼

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

うーん、エラーは出ませんか。

もう少し頭を絞ってみます。

お礼日時:2008/07/22 17:51

iriyakさんと同様に、以下の環境とテストファイルを準備してクライアントから実行してみましたが


特にエラーは出ませんでした。
(「test.dat」を送信して、「test1.dat」で受信し直すといった簡単なサンプルです。)
FTPを実行する前にどんなコマンドを実行しているか確認された方がよいです。
また、スクリプト中で動かす内容を実際に手動で実行してみて、どんなエラーが出ているのか
確認された方が解決の早道かも知れません。

◆テスト環境◆
【クライアント】
 OS:Win XP Pro SP2(WSH v5.6)
【サーバ】
 OS:Win 2k
※FTP用アカウントとして、ユーザ名「user1」、パスワード「user1」で作成
  更に、FTPの仮想ディレクトリ「/user1」を読み書きOKで作成
  (user1でログインすると、ここがカレントディレクトリになります)

【クライアント側に用意して実行】
「c:\temp\test.dat」…送信ファイル(15MB程度のファイル)
「test.ftp」…FTPコマンドファイル(拡張子は適当です)
「test.wsf」…テスト用WSHファイル(FTPサーバのIPアドレスは変更して下さい)
■ test.ftp
user1
user1
binary
put c:\temp\test.dat test.dat
get test.dat c:\temp\test1.dat
close
quit

■ test.wsf
<package>
<job ID="TEST_FTP">
<object id="ws" progid="WScript.Shell"/>
<script language="JScript">
var cf = "test.ftp";
var ip_add = "xx.xx.xx.xx"; // 環境に合せて変えて下さい
var cmd = "ftp -w:8196 -i -s:"+cf+" "+ip_add;
ws.Popup(cmd);// 実行内容を確認&手動で実行してみましょう
var errCode = ws.Run(cmd,0,true);
ws.Popup(errCode);
</script>
</job>
</package>
    • good
    • 0
この回答へのお礼

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

やはりエラーになりませんか…。

色々と試行錯誤をしておりましたところ、
Run を Excec に変えたらエラーが出なくなりました。

やってることは同じなんですが…不思議です。

お礼日時:2008/07/22 17:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A