对于我的生活,我无法弄清楚为什么下面的if
提示在@echo off
REM :askdeletecsvs
if exist *.csv (
echo Warning! All files in the scripts folder that have the "CSV" extension will be deleted!
echo Answering "n" will continue the script without deleting the CSVs.
set /p ASKDELETE=Delete CSVs? (y/n):
REM
REM if ( /i %ASKDELETE% equ "y" goto :deletecsvs )
REM if ( /i %ASKDELETE% equ "n" goto :runscripts )
REM goto :askdeletecsvs
)
声明中不起作用:
set
当我运行批处理文件时,cmd窗口打开然后快速关闭。如果我将if
行移到{{1}}语句之外,则提示会按预期显示。 (是运行bat文件的文件夹中的 csvs)
我错过了什么?
答案 0 :(得分:2)
首先,您使用了一个结束括号,这个括号过早地结束了您的开头If
括号。
我建议改变这种想法:
If Not Exist *.csv GoTo runscripts
Echo Warning!
Echo All files in the scripts folder that have the "CSV" extension will be deleted!
Echo Answering "N" will continue the script without deleting the CSVs.
Choice /M "Delete CSVs"
If ErrorLevel 2 GoTo runscripts
:deletecsvs
Del /F /Q /A "PathTo\scripts\*.csv"
GoTo :EOF
:runscripts
您可以根据需要将GoTo :EOF
更改为相关的有效标签,或者如果您想继续:runscripts
,则将其删除。如果批处理文件从scripts目录运行,您还可以将PathTo\scripts\
替换为%~dp0
,如果当前目录包含这些文件,则删除PathTo\scripts\
。 (请注意,当前目录和批处理文件路径可能不一定相同)