• ベストアンサー

Q>Windowsでファイルをコピーする処理の作り方を教えて

こんばんは。WindowsXPで動作するバッチについて教えてください。 コマンドプロンプトかPerl、ExcelVBA、あるいは他の方法で以下の処理をするバッチを作りたいと思っています。 //------------------------------------- (1)WindowsXPのPC(PC1)で一定時間間隔(1時間おきくらい)に起動する。 (2)別のPC(PC2)にネットワーク接続する。 (3)PC2の特定のフォルダに特定のファイルがあったらPC1にコピーする。 ただしそのファイルがすでにPC1にあったら上書きしない。 //------------------------------------- (1)はWindowsのタスクスケジューラでできると思っていたのですが、 タスクの起動間隔は最低1日だったのでダメでした。 (2)はコマンドプロンプトなら NET USE コマンドでできるはず。 ですがPerlだとやり方がわかりません。 (3)は上書きしない方法がわかりません。コマンドプロンプトでCOPYするとY/Nを訊かれるし、 copy/yだと上書きされてしまいます。 他のフォルダに退避する、とか無理やりならできなくもないですが。 私はコマンドプロンプト、Perl、VBA 以外のスクリプトには慣れていないので できればこのうちのどれかでやりたいと思っています。 うまい方法はないでしょうか? 知恵をお貸しください。m(_ _)m

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

  • ベストアンサー
回答No.2

>(1)はWindowsのタスクスケジューラでできると思っていたのですが、 >タスクの起動間隔は最低1日だったのでダメでした。 そんなことはありません、オプションで設定可能です。 http://www.koikikukan.com/archives/2007/08/21-015016.php >(3)は上書きしない方法がわかりません。 DOSコマンドなら「if exist <ファイル名>」で可能です。 http://ykr414.com/dos/dos05.html#04

haichicchi
質問者

お礼

スケジュールは一度登録してからプロパティで変更できたんですね。 何で最初から設定できないんだろう。。。 if exist はそういえば昔見た覚えがありましたが忘れてました。 おかげさまで解決です。ありがとうございました。

その他の回答 (1)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

コマンドプロンプト、Perl、VBA のスクリプトに慣れているなら、 VBスクリプトを使ってWSH(window scripting host)で記述するのが よいと思います。 ファイルやフォルダーの操作はファイルシステムオブジェクトを 使います。シェルオブジェクトを使って、外部exeファイルや cmd.exe等も呼び出せます (参考) http://timberlandchapel.com/wsh.html http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh01/cformwsh01_01.html http://winofsql.jp/enum/vbsguide/vbsguide_links.htm http://www.happy2-island.com/vbs/cafe02/capter00000.shtml

haichicchi
質問者

お礼

WSHでWindowsの操作が出来そうだとは思っていましたが、このURLを見てみるとやはり便利そうですね。 ちょっと勉強してみることにします。 ありがとうございました。

関連するQ&A

  • Windowsのフォルダ・ファイルのコピーでの強制上書きする方法につい

    Windowsのフォルダ・ファイルのコピーでの強制上書きする方法について。 WindowsXPを使っているのですが、フォルダ・ファイルをコピーするときに コピー先に同じフォルダ・ファイルがあると、上書き確認ダイアログが表示されるのですが この上書き確認ダイアログを表示せずに、強制上書きする方法は有りますでしょうか。? ネットで調べたら、cpコマンドをコマンドプロンプトで行う方法はあるようなのですが、 できればコマンドプロンプトではなく、GUIでやりたいです。 よろしくお願いいたします。

  • テキストファイル結合のバッチコマンド

    DOSプロンプトで、「copy」というコマンドを使って特定のフォルダ内のテキストファイルを全て読み込んで結合するバッチファイルを作りたいのですが、わかる方教えてください。

  • 毎日ある時間ごとに、ファイルを圧縮したい

    Windows 2000 Server を使用しているのですが、毎日ある一定の時間に、フォルダごとファイルを圧縮したいと思っています。 コマンドプロンプトから圧縮できれば、バッチを組み、タスクスケジューラなどから実行できるかなと思っているのですが、何か方法があるでしょうか。

  • Windows7のバッチ処理(at)について

    現在、時間が来たらあるbatもしくはvbsを起動するバッチを検討しています。 しかし、Windows7で 「at ○○:○○ /interactive "C\user\test.exe"」 といった記述を実行しようとしても起動しません。 何やらタスクスケジューラにはリストアップされているんですが・・・ コマンドプロンプトの注記ではセキュリティ警告のようなものが出ます。 Windows7ではatを利用した簡単なタイムスケジュール実行はできないのでしょうか。 ご教示ください。

  • VBA バッチファイルでコピー出来ない

    以下のマクロを作りましたが、うまくいきません。 フォルダBにあるバッチファイルを実行するだけのマクロで、バッチファイルはフォルダAにあるファイルを自身のフォルダつまりフォルダBにコピーするものです。 マクロ Sub Test() Dim Str As String Str=shell(folderB\batch.bat, vbnormalfocus) End sub Batch.batの中身 Copy folderA\fileA . 注:folderAやfolderBはそれぞれのフォルダのフルパスです。 実行すると、何故かフォルダBでなくてデスクトップにコピーされます。バッチファイルをクリックして直接起動すると、目論見通りフォルダBにコピーされます。コマンドプロンプトからフォルダBに移動し、バッチファイルを起動しても、目論見通りフォルダBにコピーされます。 マクロから起動した時だけ、どうしてデスクトップにコピーされるのでしょうか?

  • バッチフィルで起動した別ウインドウを閉じるには

    バッチファイルの中から別のコマンドプロンプトを起動して そこでコマンドを実行した後、この別起動したコマンドプロンプト のウインドウを閉じるにはどのようにすればよいでしょうか。 例えば、以下のバッチファイルを コマンドプロンプト(ウインドウ1)から実行すると もうひとつ別のコマンドプロンプト(ウインドウ2)が 起動してcopyコマンドが実行されますが 何分かしてコピーが終了して ウインドウ2はコマンド待ちの状態になりますが ウインドウ2は開いたままです。 この後、別のコマンドプロンプトを起動して 別の処理を行わせたいのですが その数だけ別ウインドウが表示されてしまいます。 ウインドウ2の処理が終わったらウインドウ2を閉じるには どのようにすればよいでしょうか。 (Windows7) ---test.bat------------ start copy /b c:\test1\test.exe c:\test2 -------------------------

  • VBA バッチファイルでコピーできない

    この質問は直近で出した質問を誤って締め切ってしまったため、再質問として書いてます。 以下のマクロを作りましたが、うまくいきません。 フォルダBにあるバッチファイルを実行するだけのマクロで、バッチファイルはフォルダAにあるファイルを自身のフォルダつまりフォルダBにコピーするものです。 マクロ Sub Test() Dim Str As String Str=shell("""" & folderB\batch.bat & """", vbnormalfocus) End sub Batch.batの中身 Copy "folderA\fileA" . '見えにくいですが、最後にピリオドがあります。 folderAやfolderBはそれぞれのフォルダのフルパスです。パスに空白を含むため " で囲むようにしてます。 実行すると、何故かフォルダBでなくてデスクトップにコピーされます。バッチファイルをクリックして直接起動すると、目論見通りフォルダBにコピーされます。コマンドプロンプトからフォルダBに移動し、バッチファイルを起動しても、目論見通りフォルダBにコピーされます。 マクロから起動した時だけ、どうしてデスクトップにコピーされるのでしょうか?

  • バッチ処理について

    バッチファイルでPerlを動かすことはできたのですが、バッチだとエラーが表示されたか、されなかったのかいまいちわからないです・・。 (現状)コマンドプロンプトが一瞬表示され、プロンプトがすぐに消えます。出来たファイルをみるとうまくかかっているのですが、エラー時も表示が速すぎてエラーのメッセージが読めないんです・・。うまくかかったのか、かかってないのかはファイルを開いて目でチェックしないとわからない状態です。 コマンドプロンプトをエラー発生時は表示させたまま終了とかはできないのでしょうか? 何か良い方法がありましたら教えて頂きたいです。

  • 1つのファイルを 100 のフォルダに一括コピーするには?

    1つのディレクトリ内に 100 のフォルダがあり それぞれに index.html をコピーしようと思ってるのですが、 効率の良い方法ありますでしょうか? category1 category2 category3 ... コマンドプロンプトで copy index.html C:\001\category*\ としてみましたが ここでワイルドカードは使えないようです。 vbs などでも、なにか良い方法ありますでしょうか?

  • 指定時間で自動起動のバッチファイルを作りたい

    指定時間で自動起動のバッチファイルを作りたいです。コマンドプロンプトです。 以下のバッチファイル2つを作りました。ファイルを起動しましたが定時になっても動きませんでした。 PC側はBIOS設定 (タイマー設定) はしておりました。 おそらくこちらに問題があると思いますので 詳しい方、御教示お願い致します。 ファイル1 (copy.bat設定用) REM copy.batを毎日00時に起動する pause pause cd c:\AAA at 00:00 /every:M,T,W,Th,F,S,Su c:\AAA\ copy.bat pause ファイル2 (copy.bat) REM (D)BBBフォルダーの全ての.###ファイルをCCCフォルダーにコピーする pause pause cd c:\Users\***\Desktop\BBB copy /y c:\Users\***\Desktop\BBB\*.### c:\CCC pause