批处理文件集命令在if语句中不起作用

时间:2018-05-31 16:25:13

标签: batch-file if-statement cmd

对于我的生活,我无法弄清楚为什么下面的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)

我错过了什么?

1 个答案:

答案 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\。 (请注意,当前目录和批处理文件路径可能不一定相同)