• ベストアンサー

バッチファイルの記述について

CドライブにあるAとBのフォルダをMO(E)にコピー(MOが入っているか確認をさせてから、上書き保存)するバッチファイルを書きたいのですがどのように記述したらよいのでしょうか?。DOSの知識が無いのでよろしくお願いいたします。 AとBがDドライブにあった場合も併せてお願いいたします。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

'リムーバブルディスクが挿入されているかどうか調べてからコピーする Dim objFs, objDrive, objFolder Set objFs = WScript.CreateObject("Scripting.FileSystemObject") Set objDrive = objFs.GetDrive("E") 'MOのドライブ IF objDrive.IsReady THEN Set objFolder = objFs.GetFolder("C:\A") 'コピー元のフォルダ objFolder.Copy "A:\", True 'MOに上書き保存 Set objFolder = objFs.GetFolder("C:\B") 'コピー元のフォルダ objFolder.Copy "A:\", True 'MOに上書き保存 ELSE MsgBox "MOドライブの準備が出来ていません" END IF 上記をABCOPY.vbsとかなんとか 拡張子を「vbs」で保存して、ダブルクリックして実行してください。 コピー元がDドライブの場合、 コピー元のフォルダを指定している行の "C:\A" の部分を "D:\A" の様に変更して下さい。 要は、ドライブ名からフォルダ名までののフルパスで書けばいいです。

syuuchan
質問者

補足

早速のご回答ありがとうございます。 このような方法で処理ができるとは知りませんでした。大変参考になりました。 追加で申し訳ありませんが、最初にEドライブのAフォルダを削除(確認の有りと無しの場合をお願いいたします。)してからコピーする場合はどのように記述するのでしょうか?。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

フォルダを削除するには、 Set objFolder = objFs.GetFolder("E:\A") 'MOのAフォルダ objFolder.Dalete の様にします。 読み取り専用フォルダになっている場合は、 上記では、削除しないので、 そういう場合でも強制削除するには objFolder.Dalete,True とします。 何かを確認したい時には、メッセージボックスを出してOKまたは、キャンセルを選ばせます。 choice = MsgBox("削除を実行しますか?",vbOKCancel,"実行確認") IF choice = vbOK THEN msgBox "削除します" objFolder.Dalete,True ELSE MsgBox "削除をキャンセルします" END IF のような感じでやればいいです。

syuuchan
質問者

お礼

早速のご回答ありがとうございました。 VBSは今まで記述したことはありませんでしたが、便利に使える感じです。勉強してみようと言う気になりました。 う~ん時給千円はチト安いのでは・・!。

  • utakataXEX
  • ベストアンサー率69% (711/1018)
回答No.2

別解でコマンドオンリーのパターンを。 Dドライブの場合は「C:\」を「D:\」にしてください。 因みに、NT系(2000,XP)の例です。95系(98,Me)の場合は使えません。 その場合は #1さんの方法の方がよいでしょう。 @echo off if not exist E: goto ERROR xcopy "C:\コピー元のAフォルダ" "E:\コピー先のAフォルダ" /S /I /D xcopy "C:\コピー元のBフォルダ" "E:\コピー先のBフォルダ" /S /I /D echo コピー完了 echo 続行で終了します pause goto END :ERROR echo MOドライブの準備ができていません echo 続行で終了します pause :END

syuuchan
質問者

お礼

ご回答ありがとうございます。 大変参考になりました。 あれこれ悩んでないでいつもこのサイトを利用しています。詳しい方がいらっしゃるのでいつも助かっています。

関連するQ&A