Batch file :这是一个意外的时刻
我正在创建一个bat文件,它为服务器构建执行一些基本功能。该脚本被制作成具有一定的交互性。这允许我们在脚本上使用,用于生产、开发或QA。失败的脚本区域如下所示Batch file :这是一个意外的时刻,batch-file,Batch File,我正在创建一个bat文件,它为服务器构建执行一些基本功能。该脚本被制作成具有一定的交互性。这允许我们在脚本上使用,用于生产、开发或QA。失败的脚本区域如下所示 echo Enter User-defined Information about this Server: echo Environment: echo 1. PROD echo 2. QA echo 3. Dev echo Choose one: CHOICE /C 123 if
echo Enter User-defined Information about this Server:
echo Environment:
echo 1. PROD
echo 2. QA
echo 3. Dev
echo Choose one:
CHOICE /C 123
if errorlevel 1 (set ENVIRONMENTNAME=PROD & set ENVNAME=Production)
if errorlevel 2 (set ENVIRONMENTNAME=QA & set ENVNAME=Acceptance)
if errorlevel 3 (set ENVIRONMENTNAME=Dev & set ENVNAME=Development)
一旦提示我“选择一个:”我选择其中一个选项,然后得到错误::此时出现意外情况。从脚本顶部删除
@echo off
或echo off
命令(或添加echo on
),并使用结果输出调试导致错误的行
出于优化目的,请将
if errorlevel
命令按降序排列。if errorlevel
命令在errorlevel
是指定的数字或更高时触发if errorlevel
我意识到这是一个迟到的答案,但我刚刚经历了完全相同的错误消息,尽管是“set/p”给我造成了问题。这条线路原来是:
set /p Option=Do you want to go ahead and load the data? ([Y]/N):
我找到的解决方案是在提示文本周围加上双引号,因此:
set /p Option="Do you want to go ahead and load the data? ([Y]/N): "
不知道这是否对任何人都有帮助,但它为我解决了问题:-)对我来说不会失败。我想这只是脚本的一个子集,因为我希望在脚本的第一行出现“回音关闭”。这个脚本本身对我来说是有效的。errorlevel之后是什么?脚本的其余部分如下:Nvm。我注意到问题出在哪里,但有时它似乎起作用,但其他时候它不会改变
if errorlevel
顺序,除非您添加else
s,否则将破坏此脚本。我也看到了出错的行,但奇怪的是,它有时起作用,有时不起作用在不更改任何其他内容的情况下,所有语句仍将执行,但这次输出将始终为1,因为3和2大于等于1,1将是最后一个检查的数字。我也看到了这种行为。特别是关于环境路径中的变量:cmd不喜欢路径中带有空格,尽管对于各种应用程序(例如C:\Program Files\…)有很多这样的例子。将路径括在双引号内通常是一种很好的做法。