• 締切済み

NETWORKが遮断された際に削除処理をとめ方

NETWORKが遮断された際に下記のFORFILESのバッチをとめたいです ・フォルダ内の動き (1)サーバー→DBBackupを1日1回取得し3日間分保存している (2)サーバー→(1)サーバーから最新のファイルのみコピー       前日のファイルを削除している ただ(1)と(2)のサーバー間のNETWORKが遮断された際に(2)のサーバーにBackupをコピーできなくなる為バッチ上でNETWORK遮断がわかり削除処理をとめたいです ・下記のバッチ ROBOCOPY→最新のファイルを指定してコピーするバッチ FORFILES→一日前のファイルを指定して消します。 ROBOCOPY \\コピー元\d$\BackUp C:\コピー先\DBBACKUP /MAXAGE:1 /S FORFILES /P C:\削除元\DBBACKUP /D -1 /M "*.txt" /c "cmd /c del @file" 上記のバッチに加え要望再現できる方ご教授いただければと思います。

みんなの回答

  • f272
  • ベストアンサー率46% (7998/17100)
回答No.1

こんな感じ? ROBOCOPY \\コピー元\d$\BackUp C:\コピー先\DBBACKUP /MAXAGE:1 /S if errorlevel 8 echo ***ERROR*** & goto end FORFILES /P C:\削除元\DBBACKUP /D -1 /M "*.txt" /c "cmd /c del @file" :end

関連するQ&A

  • バッチ処理であるメッセージがでた場合処理を止める

    ファイルのBackupをしていますが最新ファイルのコピーに失敗した場合削除の処理を止めたいです。 失敗したときはネットワークに問題があるなどが考えています。 ◆(1)サーバー 1日1回DBBackupをとっている 3日分のみ保存している ◆(2)サーバー (1)サーバーのファイルを最新分のみコピーしています。 (2)のファイルは最新のファイルがコピーされた場合前日のファイルは削除します ◆下記に現在のバッチイメージをのせます ROBOCOPY \\コピー元\d$\BackUp C:\DBBACKUP /MAXAGE:1 /S forfiles /P C:\DBBACKUP /D -1 /M "*.txt" /c "cmd /c del @file" ◆コピーに失敗したときに下記のメッセージが出力されました 指定されたファイルが見つかりません 上記の内容がわかる方ご教授お願いいたします。

  • 他サーバーにあるファイルコピーのバッチ作成について

    とあるサーバー間で最新のDBBackupファイルのみコピーをしたいと思っています。 (1)のサーバーにあるBackupファイル(3ファイル) 例) 1. xxxxx.20180501.backup 2. xxxxx.20180502.backup 3. xxxxx.20180503.backup ↓ (2)のサーバーに最新のファイル(3.のみ)コピーさせたいです。 (1)にあるファイルは毎日1回4時にBackupされ過去3日分保存されます。 (2)のコピー先ディレクトリは以下の通りです。 C:\DBBACKUP (2)最新のファイルのみ上書きでBackupしたいです 上記の内容のバッチ作成をしたいのですがご教授いただけますか。

  • バッチファイルでファイル削除ができない

    こんにちは。バッチファイルについてご質問です。 OSはWindows2003 Serverです。SQL Server2008を使用しております。 SQLエージェントを使用して、以下フォルダに、YYYYMMDDhhmmss.bakというタイトルをつけて、デイリーでバックアップを取っております。 C:\backup\log\ 日々ファイルが増えていくので、最新のファイル5個だけ残したいと思い、 以下のバッチファイルを作成しましたが、"20110111130339.bak"が見つかりませんでした。 というエラーが表示されて、ファイルが削除できません。 フォルダ内には、同タイトルのファイルがあります。 for /f "skip=2" %F in ('dir /b /o-n C:\dbbackup\log\??????????????.bak') do del %F よろしくお願いいたします。

  • ROBOCOPYのバッチ処理

    ROBOCOPYでは、一番上の階層は指定できないのでしょうか? 指定の仕方がまずいのでしょうか? エラーで止まってしまいます。 ROBOCOPY "D:\" "X:\" /MIR /XO また、初歩的な質問なのですが、バッチ処理では上から順に処理されていくと考えてよろしいくのでしょうか? 例えば下記のようにした場合 @ecoh off ROBOCOPY "D:\TEST1" "X:\TEST1" /MIR /XO ROBOCOPY "D:\TEST2" "X:\TEST2" /MIR /XO ROBOCOPY "D:\TEST3" "X:\TEST3" /MIR /XO D:\TEST1からX:\TEST1へのコピーが終わってから、D:\TEST2からX:\TEST2へのコピーが始まると考えてよろしいでしょうか? 同時に実行されて、マシンのリソースを過剰に喰ってしまわないかと心配しております。 よろしくお願い致します。

  • Win2K8 R2のタスクでバッチが動作しない

    Windows2008 R2のタスクスケジューラでバッチファイルが実行できない状態に陥っています。 環境・状況等は以下のとおりです。 ・バッチファイルを単体で実行させたときには、問題なく実行できる。 ・ネットワーク上のサーバのあるフォルダをrobocopyするジョブ。 ・タスクスケジューラから実行できている他のバッチファイルを流用して作成。(このジョブも別のサーバのバックアップをしている) ・実行結果は、0x1。 ・タスクスケジューラ登録時には、administratorで登録し、パスワードも入れている。 問題のバッチファイルを直接叩いたときには、何のエラーもなく、約3時間要するrobocopyでのバックアップが稼動しますが、 タスクスケジューラに登録して実行しようとすると、タスクスケジューラの履歴をみると、スタートはしているがすぐに終了して おり、バッチファイル内に記述したrobocopyが稼動していないようです。 バッチファイルの内容は ----------------------- @echo off set LOGFILE=c:\bat\fd_backup\backup.log date /t>%LOGFILE% echo 開始時刻>>%LOGFILE% time /t>>%LOGFILE% echo. >>%LOGFILE% echo Run backup.bat>>%LOGFILE% echo. >>%LOGFILE% ROBOCOPY \\server1\backup\ D:\BACKUP\server1-back\ /MIR /NP /FP /TS /COPYALL /TEE /R:0 /LOG+:%LOGFILE% echo. >>%LOGFILE% echo 終了時刻>>%LOGFILE% time /t>>%LOGFILE% ------------------------- もうひとつ登録してあるバッチファイルは、robocopyの全く同じコマンドで、対象としているサーバと保存先やログファイル名が 異なるだけで問題なくタスクとして稼動しています。 ネット上でいろいろと調べてチェックしてみましたが、おかしいところが見当たらず、困っています。 アドバイスよろしくお願い致します。

  • 2008でバッチファイルからバックアップするには?

    お世話になっております。 SQL Server 2008 Expressで、DBのバックアップを定期的に取ろうとしているのですが、うまくいきません。 SQL Serverのタスク等ではなく、バッチファイルを作成し、 タイムスタンプを付けて保存したいと思っています。 例:「TESTDB_YYYYMMDD_HHMMSS.bak」 2005のときは、以下のファイルを用意し、 Backup.bat Backup.sql ---- Backup.bat 内容 ------------------------ sqlcmd -SMYPC\SQLEXPRESS -Usa -iC:\DBBackup\DBBackup.sql -P"" >> C:\DBBackup\backup.log (タイムスタンプを付ける処理) ---- Backup.sql 内容 ------------------------ BACKUP DATABASE [TESTDB] TO DISK = N'C:\DBBackup\TESTDB.bak' WITH NOFORMAT, NOINIT, NAME = N'TESTDB-完全 データベース バックアップ', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO 同様の処理を2008上で行うと、特にエラーメッセージも出ないのですが、 バックアップファイルが出力されません。 (Management Studio Express上でSQLを流すとバックアップファイルが出力されます。) SQLCMDの仕様が変わった為かと思いますが、 解決策をご存知の方いらっしゃいましたら、宜しくお願い致します。

  • forfilesで検索したファイルをテキストに出力

    forfilesコマンドを使って、更新日付が30日以上前のファイルを検索して削除するバッチファイルを作ろうとしています。 削除する前に検索結果をテキストに出して確認したいのですが、ファイル名しか出すことが出来ません。 なんとか更新日付も出力したいのですが、可能なのでしょうか。現在下記のようになっています。 ※WindowsXP ✳︎✳︎✳︎✳︎✳︎✳︎✳︎✳︎✳︎✳︎✳︎✳︎ forfiles -pC:\WORK\ゴミ箱 -s -m*.* -d-30 >> "ファイル一覧.txt →テキストを確認してから削除実行 forfiles -pC:\WORK\ゴミ箱 -s -m*.* -d-30 -c"CMD /C DEL 0x22@FILE0x22" ✳︎✳︎✳︎✳︎✳︎✳︎✳︎✳︎✳︎✳︎✳︎✳︎ プログラミングの知識がないため、WEB検索しながら何とか作っています。 ご教授頂けると幸いです。

  • バッチでリトライ回数を指定することはできるのでしょうか…?

    以下のように、サーバー上にあるROBOCOPYコマンドを使って、 クライアントPCからログオンのタイミングでこのバッチが流れるように設定したいと思っています。 \\Server\com\robocopy "C:\My Documents" \\Server\Backup\ /is /sec /v /mir >> \\Sever\Backup\log.txt (C:\My Documentsというのは例です) これで動き的には問題はないのですが、 C:\My Documents が見つからない時、えんえんと探しに行ってしまい、 robocopyコマンドが一向に終了せず、困っています。。(サーバーを再起動すれば直るのですが) そこで、 バッチ処理で、「○○回繰り返す」といった、リトライ回数を設定する事は出来るでしょうか? もしくは、 えんえんと探しに行って処理が終わらなくなった時、サーバー上で走りまくっている このバッチ処理を停止することは出来るでしょうか? (ターミナルサービスマネージャや、タスクマネージャを見てみたのですが…わからず…orz) できればリトライ回数を設定できれば良いのですが。。 自分で調べてみたりもしたのですが、見つからず…。(´ヘ`;) どなたかおわかりになる方、ぜひぜひご教授よろしくお願いいたします~!

  • ネットワーク上のファイルを移動する際に

    Air H"で繋いだモバイル環境(ノートパソコンC)から、同一のLANネットワーク上にあるサーバAからサーバBにファイルをコピーする命令を出したところ、異様に時間がかかってしまいました(10MBのファイルのコピーに4時間近く)。 初心者考えでは、ネットワーク上でファイルを移すだけなのですぐにできるはず、と思っていたのですが、通信パケット量の推移を見ていると、サーバAから一旦指示を出したノートパソコンCにファイルをダウンロードして、改めてサーバBにアップロードしていたようです。 そこで、教えて頂きたいのですが、 サーバAからサーバBにファイルをコピーする際に命令を出したノートパソコンCを経由するのは、必然なのでしょうか? それともこれは今回の環境に固有の問題で、サーバ、モバイル環境のOSやネットワークの構成の仕方を変えれば、サーバAからサーバBに直接ファイルのコピーを行ない、結果のみをノートパソコンCに表示することは可能になるのでしょうか? (このケースではサーバA,B、ノートパソコンC共にWin2000) 以上、よろしくお願いします。

  • DOSコマンドで指定日数よりも過去のフォルダを削除

    サーバ上のログファイルを日毎に次のようなフォルダにまとめて管理しています。 (ログフォルダは翌朝のDOSバッチジョブでBACKUP_(処理日付)のフォルダを作成してその下に*.*指定で全てのファイル(除 フォルダ)を移動して作成します。) 例. BACKUP_20041130 BACKUP_20041129 BACKUP_20041128    ・    ・    ・ BACKUP_20040311 BACKUP_20040310 このフォルダを処理日付から数えて90日より古いものを削除するDOSコマンドバッチファイル(日次実行)を作成したいです。 プログラムを作成すればこれを実現するのは可能なんですが、なんとかDOSコマンドだけでこの仕組を作りこめないものでしょうか? ご存知の方がいらっしゃったら教えて下さい。