• 締切済み

VBScriptでFTP転送したファイルを削除

VBScriptでFTP転送したファイルの削除は可能でしょうか。 以下のURLを参考に、VBSでファイルをFTP転送するプログラムを作成しています。 https://esoro.jp/?p=128 このプログラムでサーバに転送したファイルを、 同じソース内で削除したいのですが、可能でしょうか。 ----ソース---- 'FTP送信指定 Const HostName = "xxx.xxx.xxx.xxx" Const UserID = "userid" Const UserPass = "password" Const DestDir ="Upload" Dim strDest,strSrc, UpFileName, UpFileSize, oSH, objDest strSrc="D:\log\temp" strDest = "ftp://" & UserID & ":" & UserPass & "@" & HostName & "/" & DestDir Set oSH = CreateObject("Shell.Application") Set objDest = oSH.NameSpace(strDest) For Each objItem In oSH.NameSpace(strSrc).Items UpFileName = objItem.Name UpFileSize = objItem.Size objDest.CopyHere objItem, &H04 + &H10 Next ------------- 転送は問題なく動いています。 CopyHereの部分をDELETEFILEやDELETEに変更したりして実行してみましたが、 上手くいきませんでした。 ご存じの方がいらっしゃれば、ご教示をお願い致します。

みんなの回答

  • hiodraiu
  • ベストアンサー率15% (447/2818)
回答No.3

No.2です 今、手元にUNIXしか無いので、IISの設定は分からないです。 因みに、先の回答にも書きましたが、ファイルのパーミッションは如何ですか?経験的には、こちらでハマる場合が多いように思います。

  • hiodraiu
  • ベストアンサー率15% (447/2818)
回答No.2

FTPサーバーが削除を許可しているなら削除は可能です またファイルのパーミッションにも依存します

SAKURAISLAND
質問者

補足

回答ありがとうございます。 FTPサーバの削除許可とのことですが、 現在はIISでFTPサーバを構築しており、 アクセス許可は「読み取り」「書き込み」を有効にしております。 他に設定があるのでしょうか? よろしければご教示いただけると幸いです。

  • bardfish
  • ベストアンサー率28% (5029/17765)
回答No.1

ある意味常識的で一般的なことになってしまいますが・・・ VBSというのはCLIENT Processで動くものですから実行端末内のファイルに対してのみ操作を許されているはずです。 ですから、FTP SVに接続してローカルストレージにあるファイルをPUT(送信)することはできるけど、送信したファイルをFTP SVから削除するためにはFTPサーバー側のプロセスでないと実行できないはずです。 ですから、VBSが登場する前はFTPクライアントを立ち上げたら実行するコマンドを列挙したバッチファイルを作り、バッチの中にFTPサーバー内のファイルを削除するコマンドを組み込んでいたと記憶しています。 VBSを初めとするスクリプトを使用するのであれば、FTPコンソールプログラムを起動させて、FTPコンソールで動くスクリプトを別途用意しないとだめかも知れません。

関連するQ&A

  • VBSで *.txt をサーバーにFTPするには?

    お世話になります。 早速ですが、 「ftpserver の plt00h フォルダー に *.txt をアップロードする」VBSのプログラムを作るため、 調べたところ、「ファイルをFTPするプログラムをNameSpaceで記述できる」とあったので 見てみると、JavaScript で記述してる例でした。 この例をもとに、VBSにする挑戦をしていますが、なかなかうまくいきません。 == JS sample ============================ var oShell = WScript.CreateObject("Shell.Application"); var oFolder = oShell.NameSpace("ftp://ftpusr:ftpusr@ftpserver/plt00h/") var desktop = oShell.NameSpace(0); var objFolderItems = desktop.Items(); for(var i = 0; i < objFolderItems.Count; i++) { var ofitem = objFolderItems.Item(i); if(ofitem.Name == "a.txt") { oFolder.CopyHere(ofitem); WScript.Sleep(6000); break; } } ==================================================== 上のコードをもとに、 「ftpserver の plt00h フォルダー に *.txt を,plt00vに *.org をアップロードする」 VBSのプログラム書きたいのですが、なかなかうまくいきません。 == VBS ============================================= Option explicit Dim oShell, FolderH, FolderV, desktop, objFolderItem Set oShell = WScript.CreateObject("Shell.Application") Set FolderH = oShell.NameSpace("ftp://ftpusr:ftpusr@ftpserver/plt00h/") Set FolderV = oShell.NameSpace("ftp://ftpusr:ftpusr@ftpserver/plt00v/") Set desktop = oShell.NameSpace(0) Set objFolderItems = desktop.Items() FolderH.CopyHere("*.txt") ← FTPサーバーのplt00h ヘ*.txtをアップロード? FolderV.CopyHere("*.org") ← FTPサーバーのplt00v ヘ*.orgをアップロード? WScript.Sleep(6000) ==================================================== FTPホスト     :ftpserver, FTPユーザ     :ftpusr FTP パスワード  :ftpusr FTP先DIR     :plt00h, plt00v 送信対象ファイル: :*.txt, *.org ちなみに、 ftp -s: ftp.txt の方式は、VBSで作成して、実行できました。 ご指導よろしくお願いいします。

  • cronでftp自動転送を行いたい

    ftpで自動ログイン+ファイル転送するシェルを作成して、これをcronで 実行したのですが、ftpが実行されません。()シェル単体で実行すると、転送されます) 何が原因でしょうか?宜しくお願いいたします。 【環境】 FedoraCore5 【シェル(ftp.csh)の内容】 ftp -n xxx.xxx.xxx.xxx << _EOD user xxx xxx ascii put xxxxxxxx quit _EOD 【cron設定】 05 6 * * * root /share/ftp.csh

  • 【VBScript】proxy経由のFTP転送

    お世話になります。 今、VBScriptのFTP転送について教えてください。 ------------------------------------- Function Main() ~~ Set ftp = CreateObject("basp21.FTP") rc = ftp.Connect(server,user,passwd) If rc = 0 Then v = ftp.PutFile(fromFilePath, toFile) End If ~~ ------------------------------------ 今まで、上記のソースで問題なく社外のサーバへFTP接続とファイル転送を行えていたのですが、 この度、社内のネットワーク環境が変わって、プロキシを経由をすることが必須になってしまい、 上記のソースでは動かなくなってしまいました。 なにぶん普段全くさわる事のないVBSなため、かれこれずっと頭を悩ませています。 どなたかVBSに詳しい方がいらっしゃいましたら、教えていただけますでしょうか。 宜しくお願い致します。

  • VBAでFTPファイル転送がうまくいかない

    利用環境  access:2003  os:xp このサイトを参考にvbaでFTPでファイル転送を実装しようとしています。 http://www.happy2-island.com/access/gogo03/capter90302.shtml 困っているのは、、エラーがでないのですが、ファイルが転送されないということです。 接続先やUserID,パスワードを間違えた場合は、ちゃんとエラーが表示されますので 接続まではできているのではないかと思いますが、最後のFTPファイル転送がうまくいきません。。 インターネットサービスのオープンとFTPサーバへの接続はうまくいっているようですが fcFTPPutFileの結果が何度やってもFALSEになります。 どのあたりを探れば問題がわかりますでしょうか? ご教示いただけますと助かります。 '■外部サーバーへファイルをアップロード Dim lngRC As Long 'インターネットサービスをオープンします lngRC = fcInternetOpen 'オープンに成功したらFTPサーバとの接続を行います If lngRC = 0 Then 'FTPサーバへ接続します lngRC = fcFTPConnect() '接続に成功したら、FTPサーバからファイルをアップロードします If lngRC = 0 Then Debug.Print Err.LastDllError '●↓この結果がFALSEになってしまい、ファイル転送ができません。。。 Call fcFTPPutFile(送り元ファイルパス&ファイル名_ , 送り先ファイルパス&ファイル名 _ , FTP_TRANSFER_TYPE_ASCII) Else MsgBox エラー内容 End If Else MsgBox エラー内容 End If ●↓この結果がFALSEになってしまい、ファイル転送ができません。。。 Public Function fcFTPPutFile(dLc As String, dRmt As String, dMd As Long) As Boolean 'dLc /ローカルファイル 'dRmt/リモートファイル 'dMd /転送モード 'FTPサーバへファイルをアップロード fcFTPPutFile = FtpPutFile(Pub_lngFtpHnd _ , dLc _ , dRmt _ , dMd _ , 0) End Function

  • FTPに転送したい。ファイル名にスペースはよい?

    ホームページを作成しています。画像のファイル名なんですが、 (1)「xxx yyy.jpg」 (2)「xxx_yyy.jpg] (3)「xxx-yyy.jpg」 (2)が一番理想的のような気がするんですが、(1)でもアップロードできますか? (3)でも、問題ないですか? 実は、ビルダーに付属のFFTPソフトで転送したときはできたんです。 (1)(2)(3)とも 違うFTPソフトでアップロードしたら、(1)ができなかったんですが、 ファイル名の違いですよね。 はやり、文字間にスペースはよくないですか? ホームページ初心者です。よろしくお願いします。

  • pythonでFTPを使ってファイルアップできない

    pythonで写真ファイルを指定したサーバーにFTPアップをしたいと思っています。 rasabarry piで動かしていますが、実行すると、一定時間固まってしまって終わってしまいます。サーバーを見てもファイルがアップされていません。 何か考えられることはありますでしょうか?ファイルはjpgファイルとなります。 下記にソースを明記します。 # -*- coding: utf-8 -*- import ftplib def main(): ftp = ftplib.FTP("xxx.xxx.xxx") ftp.set_pasv("true") ftp.login("user", "password") fp = open("test.jpg", 'rb') ftp.storbinary("STOR /sample/test.jpg",fp) ftp.close() fp.close() if __name__=='__main__': main()

  • FTPコマンドの戻り値(エラーコード)の意味

    【FTPコマンドの戻り値=”2”は何のエラーを意味するのでしょうか?】 あるアプリからbatファイルを起動する仕組みを作っています。 そのbatファイル内でFTPコマンドによるファイル送信をしていますが、 FTPコマンドの戻り値が正常終了の”0”ではなく”2”となってします。 処理結果をログに出すようにしているのですがそこもうまくいっていないようです。 DOSプロンプトを起動してFTPコマンドを手で入力して行くと ステップごとには正しく動くのですが、bat起動だとだめなのです。 検索してみても「エラーコードの意味」がHitしません。 どなたか教えていただけますか? 【処理詳細を以下に記します。】 内容は、ある制御ファイル(CTL。中身は0バイト)群を FTP転送し、日付入りファイル名のログに結果を出力するだけです。 ○batファイル(引数%1には、アプリから日付が渡されます。) ftp -s:ftpcmd.txt > ftplog_%1.txt ○Txtファイル open xxx.xxx.xxx.xxx (userid) (password) cd (処理ディレクトリ) ascii prompt mput c:\FTP\*.xxx.ctl disconnect bye

  • shでftp⇒接続切らずに成否確認して削除可?

    ftpで多数のファイルを転送(put)したいです。 転送した後に転送エラーがないか確認し、 転送エラーがなければローカルのファイルを削除する、 ということを1ファイルずつ行いたいです。 ftpコマンドをヒアドキュメントやコマンドファイルを使用して実行する場合、 転送エラーがあったかどうかは、ftpの出力結果を見ないと分からないので、 いったんftpコマンドを終了する必要があると思います。 そうすると、1ファイルずつftpのコネクションを張りなおさないとならないので、 WAN経由での接続を考慮すると相当効率が悪いと思うのですが、 接続を切らずに実現することは可能でしょうか。 理想案: 転送先にftp接続 すべての対象ファイルに対し、  ┣ファイルをput  ┗putが成功したら   ┗ファイルを削除 ftp接続を切断 現実案: すべての対照ファイルに対し、  ┣転送先にftp接続  ┣ファイルをput  ┣ftp接続を切断  ┗putが成功したら   ┗ファイルを削除 現実案の実装だと、こんな感じかと思います。 実際に動かしてないので、間違いあるかもですが。 for file in `ls` do  ftp -n ${hostname} > ftp.log << _EOF   user ${user} ${pass}   put ${file}   bye  _EOF  if [ `grep "err" ftp.log` ]; then   exit 1;  else   rm -f ${file}  fi done  

  • FTPでのファイルとディレクトリの判別

    現在FTPにアクセスしてファイル操作をするプログラムを作っています。 その中でフォルダ(ディレクトリ)の一覧(名前)とファイルの一覧(名前)を別々に出したいのですが何か方法ありますでしょうか? ftp_nlistで一覧を出せることはわかったのですが、どうやってフォルダなのかファイルなのかを切り分けていけばいいのかがわかりません。 ファイル名には拡張子がついていない場合もあるので「.xxx」というのが名前の最後にあるものがファイルという分け方もできません。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • bashからFTPコマンドのステータスを調べる方法

    bashからFTPコマンドのステータスを調べる方法 シェルでFTPによるファイル転送を行っていますが、FTPが成功したかどうかをシェル側で受け取ることはできますか? FTP転送に失敗したら、3回やりなおして、それでダメならあきらめるというスクリプトにしたいです。 <サンプル> /usr/bin/ftp -n -v hostname << EOF user user1 passwd1 binary put file1 bye EOF