web-dev-qa-db-ja.com

毎日のバックアップファイルの名前を変更するためのバッチスクリプト

毎日、バックアップファイルを作成するプログラムがあります。複数のバックアップを保持するようにプログラムを設定する方法はありません。以前のバックアップを上書きまたは削除するだけですが、その動作は好きではありません。

そのため、スケジュールされたタスクを通じて起動されるバッチファイルを作成することを考えていましたが、私の知識はいくつかのコマンドに限定されています。

たとえば、バックアップ場所フォルダが「C:/ backup」であり、バックアップファイルに常に「skiman」という単語が含まれているとします。

次に、「skiman」という単語を含むファイルの名前をAutoBackup01.Zipに変更し、最大10個のバックアップを作成し、AutoBackup01.Zipを最新のバックアップ、AutoBackup10.Zipを最も古いバックアップとして保持し、古いバックアップを削除します。 AutoBackup10.Zipより古いバックアップ。つまり、新しいバックアップファイルがあるたびに、すべてのファイルに+1が追加されます。

ヒントやヘルプがあれば大歓迎です... PowerShellスクリプトでもうまくいくと思いますが、PowerShellについては何も知りません。

ありがとう(PS:英語の間違いがあったらごめんなさい、英語は私の母国語ではありません)。

1
MikjoA

Tetsujinがここで述べていることと同じですが、そうでない場合でも、PowerShell FileSystemWatcherを使用して、これらのバックアップがドロップされるディレクトリを監視し、ファイル名の一部として現在の日付とタイムスタンプを使用して名前を自動的に変更できます。

FileSystemWatcherの使用は、このトピックに関する完全に文書化された記事とサンプルコードがたくさんある、非常に一般的なことです。

例えば:

Powershell FileSystemWatcher

このスクリプトは、.net FileSystemWatcherクラスを使用して、NTFSファイルシステム内のファイルまたはフォルダーの「作成」、「変更」、および「削除」イベントをサブスクライブします。これらのイベントのトリガー時のアクション。

https://gallery.technet.Microsoft.com/scriptcenter/Powershell-FileSystemWatche-dfd7084b/file/42206/1/FileSystemWatcher.ps1

これを微調整して、他にやりたいことを何でもします。

1
postanote

だから、これをあなたに説明するのは難しいです、私の英語は限られています..。


Batファイルを使用してみてください。これにより、次のことが確認されます。

1)フォルダc:\backup-> exist

2)ファイル*skiman*.Zip-> exist

ファイルAutoBackupXY.Zip-> exist

Obs:-別の数値範囲での作業を受け入れることを検討しています:

  • From00to09維持するためにAutoBackup00.Zip最新のものとして
    • AndAutoBackup09.Zip最も古いバックアップとして
@echo off && verify ^.not 2>nul || ;color 0a && ;setlocal enabledelayedexpansion
set "_= /y /v /b " && mode 105,15 && set "_msg=*Press any key to continue^!!..."

if exist c:\Backup\nul (;cd /d "c:\Backup\." && ;title <nul && ;title ...\%~nx0)
for /f tokens^=* %%k in ('%__APPDIR__%where .:*skiman*.Zip')do set "_backs=%%~k"
if not "!_backs!"=="" (set "_target=!cd!\AutoBackup#.Zip") else (echo/Path: !cd!
echo=Drive/Folder/file skiman.Zip not found "c:\Backup" [Error^^!!] & goto :^[ )

echo/:Copy file backup:&echo/"!_backs!"^[ok^^!!]^|^Pending renaming ^[00^-^0^9^]
for /l %%i in (9 -1 1) do for /f %%I in ('set /a %%i-1')do >nul cd. & rem./ && (
if exist "!_target:#=0%%~I!" >nul copy !_!"!_target:#=0%%~I!" "!_target:#=0%%i!"
if exist "!_target:#=0%%I!" echo/"!_target:#=0%%I!" "!_target:#=0%%i!" [ok^^!!])

if exist "!_backs!" (copy !_! "!_backs!" "!_target:#=00!">nul) else (>nul cd. &(
echo/Backup file source: "!_backs!" not found: [Error^^!!] & echo/ & goto :^[ ))
:^[ 
echo/ & echo/%_msg% && timeout -1 >nul & <nul endlocal && exit /b 1 || goto :EOF

  • 出力1st run
:Copy file backup:
"C:\Backup\2020-01-09_skiman.Zip"[ok!]|Pending renaming [00-09]

  • 出力2nd run
:Copy file backup:
"C:\Backup\2020-01-09_skiman.Zip"[ok!]|Pending renaming [00-09]
"C:\Backup\AutoBackup00.Zip" "C:\Backup\AutoBackup01.Zip" [ok!]

  • 出力3rd run
:Copy file backup:
"C:\Backup\2020-01-09_skiman.Zip"[ok!]|Pending renaming [00-09]
"C:\Backup\AutoBackup01.Zip" "C:\Backup\AutoBackup02.Zip" [ok!]
"C:\Backup\AutoBackup00.Zip" "C:\Backup\AutoBackup01.Zip" [ok!]

  • 出力4th run
:Copy file backup:
"C:\Backup\2020-01-09_skiman.Zip"[ok!]|Pending renaming [00-09]
"C:\Backup\AutoBackup02.Zip" "C:\Backup\AutoBackup03.Zip" [ok!]
"C:\Backup\AutoBackup01.Zip" "C:\Backup\AutoBackup02.Zip" [ok!]
"C:\Backup\AutoBackup00.Zip" "C:\Backup\AutoBackup01.Zip" [ok!]

  • 出力5th run
:Copy file backup:
"C:\Backup\2020-01-09_skiman.Zip"[ok!]|Pending renaming [00-09]
"C:\Backup\AutoBackup03.Zip" "C:\Backup\AutoBackup04.Zip" [ok!]
"C:\Backup\AutoBackup02.Zip" "C:\Backup\AutoBackup03.Zip" [ok!]
"C:\Backup\AutoBackup01.Zip" "C:\Backup\AutoBackup02.Zip" [ok!]
"C:\Backup\AutoBackup00.Zip" "C:\Backup\AutoBackup01.Zip" [ok!]

  • 出力6th run
:Copy file backup:
"C:\Backup\2020-01-09_skiman.Zip"[ok!]|Pending renaming [00-09]
"C:\Backup\AutoBackup04.Zip" "C:\Backup\AutoBackup05.Zip" [ok!]
"C:\Backup\AutoBackup03.Zip" "C:\Backup\AutoBackup04.Zip" [ok!]
"C:\Backup\AutoBackup02.Zip" "C:\Backup\AutoBackup03.Zip" [ok!]
"C:\Backup\AutoBackup01.Zip" "C:\Backup\AutoBackup02.Zip" [ok!]
"C:\Backup\AutoBackup00.Zip" "C:\Backup\AutoBackup01.Zip" [ok!]

  • 出力7th run
:Copy file backup:
"C:\Backup\2020-01-09_skiman.Zip"[ok!]|Pending renaming [00-09]
"C:\Backup\AutoBackup05.Zip" "C:\Backup\AutoBackup06.Zip" [ok!]
"C:\Backup\AutoBackup04.Zip" "C:\Backup\AutoBackup05.Zip" [ok!]
"C:\Backup\AutoBackup03.Zip" "C:\Backup\AutoBackup04.Zip" [ok!]
"C:\Backup\AutoBackup02.Zip" "C:\Backup\AutoBackup03.Zip" [ok!]
"C:\Backup\AutoBackup01.Zip" "C:\Backup\AutoBackup02.Zip" [ok!]
"C:\Backup\AutoBackup00.Zip" "C:\Backup\AutoBackup01.Zip" [ok!]

  • 出力8th run
:Copy file backup:
"C:\Backup\2020-01-09_skiman.Zip"[ok!]|Pending renaming [00-09]
"C:\Backup\AutoBackup06.Zip" "C:\Backup\AutoBackup07.Zip" [ok!]
"C:\Backup\AutoBackup05.Zip" "C:\Backup\AutoBackup06.Zip" [ok!]
"C:\Backup\AutoBackup04.Zip" "C:\Backup\AutoBackup05.Zip" [ok!]
"C:\Backup\AutoBackup03.Zip" "C:\Backup\AutoBackup04.Zip" [ok!]
"C:\Backup\AutoBackup02.Zip" "C:\Backup\AutoBackup03.Zip" [ok!]
"C:\Backup\AutoBackup01.Zip" "C:\Backup\AutoBackup02.Zip" [ok!]
"C:\Backup\AutoBackup00.Zip" "C:\Backup\AutoBackup01.Zip" [ok!]

  • 出力9th run
:Copy file backup:
"C:\Backup\2020-01-09_skiman.Zip"[ok!]|Pending renaming [00-09]
"C:\Backup\AutoBackup07.Zip" "C:\Backup\AutoBackup08.Zip" [ok!]
"C:\Backup\AutoBackup06.Zip" "C:\Backup\AutoBackup07.Zip" [ok!]
"C:\Backup\AutoBackup05.Zip" "C:\Backup\AutoBackup06.Zip" [ok!]
"C:\Backup\AutoBackup04.Zip" "C:\Backup\AutoBackup05.Zip" [ok!]
"C:\Backup\AutoBackup03.Zip" "C:\Backup\AutoBackup04.Zip" [ok!]
"C:\Backup\AutoBackup02.Zip" "C:\Backup\AutoBackup03.Zip" [ok!]
"C:\Backup\AutoBackup01.Zip" "C:\Backup\AutoBackup02.Zip" [ok!]
"C:\Backup\AutoBackup00.Zip" "C:\Backup\AutoBackup01.Zip" [ok!]

  • 出力10th run
:Copy file backup:
"C:\Backup\2020-01-09_skiman.Zip"[ok!]|Pending renaming [00-09]
"C:\Backup\AutoBackup08.Zip" "C:\Backup\AutoBackup09.Zip" [ok!]
"C:\Backup\AutoBackup07.Zip" "C:\Backup\AutoBackup08.Zip" [ok!]
"C:\Backup\AutoBackup06.Zip" "C:\Backup\AutoBackup07.Zip" [ok!]
"C:\Backup\AutoBackup05.Zip" "C:\Backup\AutoBackup06.Zip" [ok!]
"C:\Backup\AutoBackup04.Zip" "C:\Backup\AutoBackup05.Zip" [ok!]
"C:\Backup\AutoBackup03.Zip" "C:\Backup\AutoBackup04.Zip" [ok!]
"C:\Backup\AutoBackup02.Zip" "C:\Backup\AutoBackup03.Zip" [ok!]
"C:\Backup\AutoBackup01.Zip" "C:\Backup\AutoBackup02.Zip" [ok!]
"C:\Backup\AutoBackup00.Zip" "C:\Backup\AutoBackup01.Zip" [ok!]

  • 出力Nth run==same出力10th run:
:Copy file backup:
"C:\Backup\2020-01-09_skiman.Zip"[ok!]|Pending renaming [00-09]
"C:\Backup\AutoBackup08.Zip" "C:\Backup\AutoBackup09.Zip" [ok!]
"C:\Backup\AutoBackup07.Zip" "C:\Backup\AutoBackup08.Zip" [ok!]
"C:\Backup\AutoBackup06.Zip" "C:\Backup\AutoBackup07.Zip" [ok!]
"C:\Backup\AutoBackup05.Zip" "C:\Backup\AutoBackup06.Zip" [ok!]
"C:\Backup\AutoBackup04.Zip" "C:\Backup\AutoBackup05.Zip" [ok!]
"C:\Backup\AutoBackup03.Zip" "C:\Backup\AutoBackup04.Zip" [ok!]
"C:\Backup\AutoBackup02.Zip" "C:\Backup\AutoBackup03.Zip" [ok!]
"C:\Backup\AutoBackup01.Zip" "C:\Backup\AutoBackup02.Zip" [ok!]
"C:\Backup\AutoBackup00.Zip" "C:\Backup\AutoBackup01.Zip" [ok!]

0
It Wasn't Me