请帮助,我是初学者,我需要创建批处理文件来删除日志文件。但在删除之前,我需要让用户删除最后一个日志文件或所有日志文件。
我尝试实现它:
set /P PARAM_VALUE=Remove only the last log file?(Y/N)?
if /I "%PARAM_VALUE%"=="y" goto DeleteLast
if /I "%PARAM_VALUE%"=="n" goto DeleteAll
但在这种情况下,我可以输入任何值,我需要避免除Y,y,N,n
之外的其他字符。
THX。
答案 0 :(得分:0)
在这种情况下,解决方案之一是使用CHOICE命令。
此工具允许用户从选项列表中选择一个项目并返回所选选项的索引。
语法:CHOICE [ /C choices ] [ /N ] [ /CS ] [ /T timeout /D choice ] [ /M text ]
参数列表:
YN
/S
代替 /T:default,timeout
代替。 /C
选项指定的选项集中,并且还必须使用/T
指定超时
注意:DOS和NT Resource Kit版本使用/T:default,timeout
代替。 对于您的问题,请尝试使用以下内容:
choice /C:YN /M:"Remove only the last log file? [YN]"
IF ERRORLEVEL ==1 GOTO DeleteLast
IF ERRORLEVEL ==2 GOTO DeleteAll
GOTO next
:DeleteAll
rem delete all
:DeleteLast
rem delete last
:next
rem continue work with Batch file
答案 1 :(得分:0)
删除命令已提供提示N / y
修改强>
del /p
在控制台中输入del /?
以获取更多信息
<强>更新强>
您可以使用此示例进行测试:
@echo off
SETLOCAL
Echo:
Echo /!\ Creating a bunch of empty files /!\
echo Press any key to continue or CTRL-C to exit...
Pause>nul
for /L %%A in (1,1,4) do (copy /y NUL _temp_file_%%A.ext)
Echo:
Echo /!\ Deleting a bunch of empty files with command prompt /!\
echo Press any key to continue or CTRL-C to exit...
Pause>nul
del /p "_temp_file_?.ext"
Echo:
Pause>nul|(echo Press any key to exit...)
答案 2 :(得分:0)
您可以捕获所有其他输入:
:CONFIRM
if /i "%PARAMVALUE%"=="y" goto DeleteLast
if /i "%PARAMVALUE%"=="n" goto DeleteAll
echo Please enter only Y/y or N/n!
ping localhost -n 2 >nul
goto CONFIRM
我也将它用于我自己的脚本,它的工作非常简单,非常简单!