1

そのため、いくつかのプログラムをバックアップし、必要に応じて復元するためのこのバッチ ファイルがあります。これらのプログラムがバックアップされるたびに、現在の日付でフォルダーを作成するように自動化しています。これまでのところ、バックアップされている現在のフォルダーの日付の 1 つとして変数を入力できるように設定してあり、正しく入力すると「CMS の復元が完了しました !!! 」と表示されますが、何も入力しないか間違った日付を入力するとそれでも「CMSの復元が完了しました!!!」と表示されます。

txt ファイルの日付を使用してこの変数を検証できるので、txt ファイルに示されている日付のみがバッチ ファイルの残りの部分を実行できるようになります。txt ファイルに表示されていない無効な日付により、バッチ ファイルを実行し続けることができないことを通知できるようにしたいと考えています。

どんな助けでも大歓迎です。ありがとう

以下のバッチファイル

$:CMS
@ECHO OFF
cd\1\mybackup\
CLS
ECHO.
ECHO        CURRENT BACKUP DATES ON DISK
ECHO.
type list.txt
ECHO.
ECHO Input date to restore CMS and press Enter.
ECHO i.e. YYYY-MM-DD
SET /p VARIABLE=
xcopy /e /y c:\1\mybackup\%VARIABLE%\CMS c:\CMS
CLS
ECHO CMS Restored ! ! !
PAUSE
GOTO 2

以下のテキストファイルからの変数

2013-08-05
2013-08-06
2013-08-07
New Folder
New Folder (2)
New Folder (3)
New Folder (4)
New Folder (5)
4

2 に答える 2

1
@ECHO OFF
cd\1\mybackup\
CLS
:again
ECHO.
ECHO        CURRENT BACKUP DATES ON DISK
ECHO.
type list.txt | find "-"
ECHO.
ECHO Input date to restore CMS and press Enter.
ECHO i.e. YYYY-MM-DD
SET "VARIABLE="
SET /p VARIABLE=
if not defined variable echo Nothing entered?&goto again
type list.txt|findstr /i /b /e "%variable%" >nul
if errorlevel 1 echo Invalid date entered&goto again
xcopy /e /y c:\1\mybackup\%VARIABLE%\CMS c:\CMS
CLS
ECHO CMS Restored to %variable% ! ! !
...

ノート:

  • :again質問を繰り返すためのラベルを追加
  • LIST.TXT を FIND にパイプして、「-」を含む行 (つまり、日付) のみを表示します。
  • 変数を NOTHING に設定するSET/Penter、変数は UNCHANGED のままになり、クリアされません。
  • 何も入力されていないことを検出します。応答して再度プロンプトを表示する
  • から入力された文字列までの任意の行list.txtに一致します - 完全一致/bは開始/eと終了します/iが、大文字と小文字は区別されません。
    • FIND必要に応じて、日付型の行と照合するために再度パイプスルーできます。
  • 入力したデータがファイルに見つからない場合は、報告して再度プロンプトを出す
  • CMS Restoredメッセージに復元エントリを追加しました。
于 2013-08-07T16:51:44.817 に答える