首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能在批处理(Windows)文件中的'if exist‘语法中声明一个变量?

为什么我不能在批处理(Windows)文件中的'if exist‘语法中声明一个变量?
EN

Stack Overflow用户
提问于 2016-10-09 00:12:20
回答 2查看 37关注 0票数 0

在下面的脚本中,很少有东西不能正常工作,我很难弄清楚为什么,首先它给变量一个'Null‘值( .txt文件不是空的),其次它返回给我一些函数在那个时候是不期望的(比如’‘goto’不是期望的),所以它可能是语法上的问题?

代码语言:javascript
复制
@echo off
set name1=sample1
set name2=sample2
set name3=sample3
set ccount=0
del mes.txt
:WFC
ping localhost -n 2 >nul
if exist mes.txt (
SetLocal EnableDelayedExpansion
set /p cname=<mes.txt
set /a ccount=%ccount%+1
if %cname%==!name%ccount%! goto AllowedList
if %ccount%==20 goto Crasher
goto WFC

我尝试在脚本的末尾调用echo %cname%,结果var的值为"nil“,另外我还打开了@echo,但是没有发现任何有用的东西来理解这个问题。最奇怪的部分是,如果我将变量声明从'if exist statemant‘中去掉,整个脚本就会像下面这样神奇地工作:

代码语言:javascript
复制
@echo off
set name1=sample1
set name2=sample2
set name3=sample3
set ccount=0
del mes.txt
:WFC
ping localhost -n 2 >nul
set /p cname=<mes.txt
if exist mes.txt (
SetLocal EnableDelayedExpansion
set /a ccount=%ccount%+1
if %cname%==!name%ccount%! goto AllowedList
if %ccount%==20 goto Crasher
goto WFC

所以,这可能足够令人满意,但它不是,有第二个软件一直在更新mes.txt值,我假设在第二个脚本中会有一些(不多,但有些)情况,其中var cname值将得到null值,但它仍然会将null值与name1进行比较,完成允许列表的排除sample1。有没有人能解决这个问题,或者至少解释一下为什么?

EN

回答 2

Stack Overflow用户

发布于 2016-10-09 01:15:35

感谢用户MC ND,他在评论中提醒我,我已经设法解决了这个问题,事实证明这是一件非常简单的事情,他的答案是:

您的问题是在24分钟前读取%cname%和%ccount% (read here)时出现延迟扩展(缺少扩展)- MC ND

我对脚本所做的工作是:

代码语言:javascript
复制
@echo off
set name1=sample1
set name2=sample2
set name3=sample3
set ccount=0
del mes.txt
:WFC
ping localhost -n 2 >nul
set /p cname=<mes.txt
if exist mes.txt (
SetLocal EnableDelayedExpansion
set /a ccount=%ccount%+1
if !cname!==!name%ccount%! goto AllowedList
if !ccount!==20 goto Crasher
goto WFC
票数 0
EN

Stack Overflow用户

发布于 2016-10-09 02:51:46

我的猜测是它应该更像这样

代码语言:javascript
复制
:WFC
Timeout 1 1>Nul
If Not Exist mes.txt GoTo :WFC
SetLocal EnableDelayedExpansion
Set/P cname=<mes.txt
Set/A ccount+=1
If %ccount% Equ 20 GoTo :Crasher
If "!name%ccount%!" Equ "%cname%" GoTo :AllowedList
GoTo :WFC
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39934538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档