所以我有这个批处理文件来备份一些程序,并在需要时还原它们。每次备份这些程序时,我都可以自动创建具有当前日期的文件夹。到目前为止,我已将其设置为您可以输入变量作为备份的当前文件夹日期之一,当输入正确时,它将显示“ 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)
答案 0 :(得分: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
以重复提问SET/P
,只需输入将保留变量
不清楚,不清楚。list.txt
到输入字符串的所有行 - 完整匹配/b
开始/e
并结束/i
但不区分大小写。
FIND
以匹配日期类型行。CMS Restored
消息中添加了还原条目。答案 1 :(得分:0)
尝试这样的事情来捕捉没有输入的日期。我编辑了添加代码以捕获无效日期(未经测试)。当然,它将在2100年失败,你需要决定是否需要更多自由裁量权。校正!
@ECHO OFF
cd\1\mybackup\
:Retry
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=
IF "%VARIABLE%"=="" ECHO.Please enter a date & PAUSE & GOTO :Retry
FOR /D %%A if (20??-*) DO IF EXIST "%%A" GOTO :DoCopy
ECHO.Please enter a valid date & PAUSE & GOTO :Retry
:DoCopy
xcopy /e /y c:\1\mybackup\%VARIABLE%\CMS c:\CMS
CLS
ECHO CMS Restored ! ! !
PAUSE
GOTO 2