• 締切済み

ファイルをコピーするvbs

ファイルをコピーするvbsってどう書けばよいのでしょうか? このvbsを実行すると、その後貼り付けでファイルがペーストされるように、クリップボードにファイル自身をコピーしておきたいです。 出来れば.NET不要でvbsファイルのみで実現出来るとありがたいです。

みんなの回答

回答No.2

No1さんが勘違いしていなかぎり、私も用途について不思議な用途になると思います。なのでファイルの中身の話になるのでしょう。 GUIでは >されないので、「クリップボードにファイル自身をコピー」という表現にしています と言う操作は、ありえるし、良く使っています。しかし、それを自動化するスクリプトで、なぜコピーバッファーに入れて止めておかないといけない? 意味不明ですよね。 もし、例えばタイマーのように、他のスクリプトを走らせ、必要な時に呼びだす。なんて考えているなら、No1と同じように、考えが甘いです。つまり、プロセス間通信とも言うべき行為を、素人はたいてい、コピーバッファーを使えば、達成できると最初は思うものです。1/100秒レベルの単位なら可能であり、ほぼ失敗がありませんが、データーは保障されませんので、消えてもたどる、復活させる事ができない。 スクリプトレベルのプロセス間通信では、ファイルI/Oを使うか、.NETなどCOM化されたWindowsAPIなど(WMIを含めて)、それらにアクセスして、提供される(winsockのような)APIを使うことです。 私の場合は環境変数又は、WMIの非同期も使ってみました。WMIの非同期(又は同期)&終了コードはとてもうまくゆきましけど。 で、本題ですが、 >エクスプローラのコピーと同じ動 であれば、それを模試すればいいだけのこと。 http://www.geocities.jp/maru3128/ShellObject.html http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/object/shellfol.htm (本当は、MSのテクニカル リファレンスページをみてください) などにでてくるように、右クリックメニューを試行してください。私も、これを使ってゴミ箱のクリアーを作っています。 やるとわかるが、リファレンスにはないことをしなとできない場合が多いです。例えば、メニューに出てくる名前がだが、Indexを指定する方法と、名前を指定する方法が在る。当然どちらも一長一短があり、使い分ける必要がある。日本でだめなら、英語指定で動作する事が多い。このマトリックスはUSAサイトに多い(日本語OSなのに英語指定で動作する?????)。 Indexはお分かりですよね。上からの順番なので、必ずしもその位置に目的の物があるわけではない。そのマシンに限り、使用できる。汎用性をもたせるには、名前指定しかない。しかしね、日本語で指定すると動作しない場合が・・・ (スペースとか全角半角、特殊文字の問題) 例: WSF <object id="Shell" progid="Shell.Application" /> var Recycle = Shell.NameSpace(10); var re = Shell.ShellExecute(Recycle.self.Path,"","y","Empty", 1); OSのバージョンによって多少動作が違う。上記はJS(var を取って終端記号をはずす)で当然VBSでも可能。何しているかわかるよね。上記は、そのままではうまく動作しない。なぜ? 試して動作を把握しよう。 WScript.Sleep(2000);を入れるとうまくゆく。さて、どこでしょう。 まあがんばって。たくさん試行錯誤してください。 本家 http://msdn.microsoft.com/en-us/library/bb773938(VS.85).aspx http://msdn.microsoft.com/en-us/library/bb774094(v=VS.85).aspx http://msdn.microsoft.com/en-us/library/gg537745(v=VS.85).aspx http://msdn.microsoft.com/en-us/library/bb774085(v=VS.85).aspx http://msdn.microsoft.com/en-us/library/cc144101(v=VS.85).aspx http://msdn.microsoft.com/en-us/library/bb776886(v=VS.85).aspx 通常、右クリックメニューは http://msdn.microsoft.com/en-us/library/bb787810(v=VS.85).aspx にあるInvokeVerb です。これで値を取得したり、実行したりしますが、すでに分かっているものならShell.Excuで十分です あと、コピーバッファーは、HTAを使い、HTMLオブジェクトで指定する方法があります。 上記サイトも古いので、新しいサイトで仕様を確認してください 最後に >、クリップボードにファイル自身をコピーしておきたいです。 このような操作で格納先を汎用語として「コピーバッファ」となります。「クリップボード」はアプリの名前なので一応。この2つを=で結んで使われることが多いが、「クリップボードを使いコピーバッファーに入れる」なんて使い方をします。

oshietezou
質問者

お礼

回答ありがとうございました。 そのものズバリの質問にして再度投稿する予定です。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

>ファイルをコピーするvbsってどう書けばよいのでしょうか 質問が舌足らずでは。ファイルのコピーというと同じものを別に1つ作るということで、VBSでもファイルのコピーは在る。 Googleでも照会してみること。 -- 質問者が言いたいのは、既にデータがある別のファイルの後に追加的にデータを作りたい(まとめたいのでは? APPEND的意味で。 http://www.red.oit-net.jp/tatsuya/vb/Open.htm ーー テキストファイルなどなら簡単だが。 ーー コピー元のファイルの中身はどういうものか?書いてないのは楽問題点をつかめておらず、VBSの問題にしているのは、楽観的に過ぎるのでは。 APPEND的なことなら、ファイルの終わりという情報を取り除かないとならないが、そのソフトを使わず、VBSなどファイルレベルで扱うものでは、そう簡単ではないとおもう。コピー元、コピー先共に読んでーー>コピー先の最後に追加ー続けて追加ー・・・ー>CLOSEが必要と思うが、それらはそのファイルのVBAのようなもの(または直にそれを満たすソフト)が必要だろう。

oshietezou
質問者

お礼

回答ありがとうございました。 そのものズバリの質問にして再度投稿する予定です。

oshietezou
質問者

補足

エクスプローラのコピーと同じ動作をすることを想定しています。 貼り付けない限りは複製が作成されないので、「クリップボードにファイル自身をコピー」という表現にしています。 ですのでコピー対象ファイルは情報として必要ないと思ったのですが、お答えすると、jar、warファイルをこのvbsでコピーする予定です。 ググって4サンプルくらい作って動かしたのですが、.NETやらなんやらでうまく動きませんでした。

関連するQ&A

  • VBSによるファイルコピー

    教えてください。 Aフォルダの中にファイルが3つ有るとします。 あ.jpg い.jpg COPY.VBS Aフォルダ内 COPY.VBS を実行すると、 あ.jpg→C:\ い.jpg→C:\PIC とファイルを異なる場所に移動したいのです。 上記の処理をする場合、Aフォルダがどちらか 決まった場所に置いて有る(C:\等)の場合は 解るのですが、実行者がAフォルダをどこに 置き実行するか解りません、VBSから見たときに 自分(vbs)と同じフォルダに有るファイル と言うパスで上記のファイル移動を実現する事は 可能でしょうか? 以上よろしくお願いします。

  • ファイルコピーVBS

    ファイルコピーVBS ファイルをコピーするVBScriptの書き方を教えてください。 コピー対象ファイルはEドライブのDataフォルダに入っています。 コピー対象ファイルは拡張子がdocかつファイルサイズが1MB以上のファイルだけです コピー先はHドライブのDataフォルダ直下です。 毎週日曜日の午前2時にWindowsのタスク機能等で実行する予定です。 WindowsServer2003R2StandardEditionで実行します。 その他必要な情報があれば言って下さい。 よろしくお願いします。

  • 画面の連続コピー&ペーストについて

    パソコン上に表示されている画像を連続してコピー&ペーストはできるので しょうか?。 連続してコピー&ペーストというのは、違う複数の画面をコピーして蓄積しておき、その後に貼り付けを一度に行うということです・・・・。 画面のコピーは、プリントスクリーンキーを使用するというのは知っています。 こんな裏技があるのでしょうか? ワードにあるクリップボードのようなことをしたいのですが・・・・。

  • vbs ファイル検索後、任意の場所にコピー

    vbsにて、以下のようなことを実現したいのですが、よくわからないので、ご教授願います。 ・実現したいこと インプットボックスに検索したいファイル名を張りつけて、検索対象ディレクトリ配下から、ファイルを任意の場所にコピーしたい。 コピー参照元は、3つ別々のディレクトリ配下の中から、一つ指定して、検索としたい。 対象ファイルが見つかったら、保存先をフォルダを指定できるダイアログを表示して、任意の場所にコピーしたい。 vbsでの作成方法がよくわからないので、ご教授いただければ助かります。宜しくお願いいたします。

  • PhotoShopでのコピー&ペーストがうまく出来ません。

    PhotoShopで、クリップポードにある画像をペーストしようとすると、前にペーストした画像が貼り付けられてしまいます。 PhotoShopでこぴーした画像はちゃんと貼り付けられるので、どうも、PhotoShop自身が、普通のクリップボードとは別に、PhotoShopだけのクリップボードを使っているみたいです。 どうしたら、他の画像ソフトからクリップボードにコピーした画像をPhotoShopに貼り付けられますか?

  • 秀丸のマクロでファイルを新規秀丸にコピーしたい

    王次郎っす お疲れさまです 秀丸エディタのマクロ関数を使用してファイルの内容を新規秀丸にコピーしたいです クリップボードを使わずにコピーできる方法があったら教えてください 例えば、「memo.txt」というテキストファイルを開いた状態でマクロを実行した場合に 新規秀丸を作成し(newfile)、「memo.txt」の内容を新規秀丸にコピーしたいです。 クリップボードを使用すればできますが(copy⇒paste)、それだとクリップボードの内容が 消えてしまうのでクリップボードは使いたくないです。 よろしくお願いします

  • VBS でファイルをコピーする際にコピー状況を表示させる

    現在VBSで、ファイルのコピー部分を作っています。 記述コード↓ fso.CopyFile コピー元ファイル , コピー先フォルダ, True ' コピー自体は出来るのですが、コピー中に何も表示されないので 大容量のファイルをコピーしている際に何も表示されない時間が長く実行されているのか不安になります。 コピー状況を明示させるようなコマンドは無いのでしょうか?? 解る方いらっしゃいましたら教えてください。 また、全然関係ないのですが、わかれば教えてほしい点が1点。 Run関数でプログラムを実行させるコードで昔記述したものがあり、 オブジェクト名.Run "C:\temp\SP3\test.vbs /q/z" こういったのがあるんですけど、 /qと/zが何を表すのかわからなくなってしまいました。 Run関数を調べると、オプションの値は0から始る数字になっていて /qとか/zを設定するなんていう説明が見当たりませんでした。 解る方いらっしゃいましたら教えてください。

  • VBSで作成したフォルダにファイルをコピー出来ない

    いつもお世話になっております。 表題に関してなのですが、VBSでFileSystemObjectを利用してフォルダを作り、 そのフォルダにファイルをコピーするという内容のスクリプトを作成しています。 ですが、フォルダは無事に出来るのですが、ファイルをコピーしようとすると、 「書き込み出来ません」 と出て、コピーされません。 fso.CopyFileのところで、エラーが発生してるようです。 CopyFileメソッドの代わりにCopyコマンドで実行するように記述すると 問題なくコピーされます。 解決方法等ございましたら、ご教授ねがいます。

  • vbsでExcelのシートをコピーするには

    vbsでExcelのシートをコピーすることができず、困っています。 雛形のAファイル(Excel)のシートを別のBファイル(Excel)にコピーしたいのですが、 下記コーディングでは、「実行時エラー この変数は宣言されていません。: 'before'」となります。 xlsSheet.Copy before:=xlsBook2.Worksheets("Sheet1") Excelのマクロに記載して、Excelのコマンドボタンから呼び出すなどすれば動くのですが、 ハンディ端末のサーバ側アプリがvbsで、vbsから行いたいのです。 vbsでExcelファイルのシートをコピーすることはできないのでしょうか。 ご存知の方、ご教授いただければ幸いです。

  • VBSでエクセルマクロの実行中

    VBSでエクセルを起動しマクロを実行ここまでは上手くいったのですが マクロはファイルを開いたエクセルにペーストするものですが ファイルを移すときにこのファイルで良いですかと聞いてきます いつもENTで実行しているのですが ENT key を押すか 開く(o)をクリックこれをVBSに組み入れたいのですが 出来るでしょうか?

専門家に質問してみよう