DOS批处理程序问题

批处理程序如下:+++++++++++++++++++++++++++++++++++++++++++++++++echoonsetlocalenabledelayede... 批处理程序如下:
+++++++++++++++++++++++++++++++++++++++++++++++++
echo on
setlocal enabledelayedexpansion
set /A total=0 & set main=主机未接通。。。。
ping 192.168.92.11 -n 1 -l 32 >aaa.txt & for /f "delims=" %%i in (aaa.txt) do (set tmpstr=%%i & if "!tmpstr:~21,5!" == "字节=32" (set main=主机接通& set /A total+=1)) &
echo 办公室 !main!。 & set main=主机未接通。。。。
++++++++++++++++++++++++++++++++++++++++++++++++++
为什么最后回显的是:
D:\bat\>主机接通。 & set main=主机未接通。。。。
下面接着提示:
'主机接通。'不是内部或外部命令,也不是可运行的程序或批处理文件。
为什么最后的一行的最后两个命令回显不全?
程序有问题。但是看不出错在哪里?
echo 办公室 !main!。 & set main=主机未接通。。。。

应该回显
D:\bat\>办公室 主机接通。 & set main=主机未接通。。。。

现在回显了
D:\bat\>主机接通。 & set main=主机未接通。。。。

这是为什么?
展开
 我来答
朴素且可爱灬小喵1
推荐于2016-08-13 · TA获得超过2902个赞
知道大有可为答主
回答量:1713
采纳率:89%
帮助的人:528万
展开全部
变量延迟后的%变!是要在for的括号内进行的,另外&符号也是顺序执行的,这个批处理直接用换行就行了。
其实您的批处理就是想测试一个地址是否ping通,然后给反馈,对吧?下面的批处理就行:

echo on
ping 192.168.92.11 -n 1 -l 32|find "字节=32"
@if %errorlevel%==0 (
@echo 主机接通。。。。
) else (
@echo 主机未接通。。。。

)
这是一个地址的,如果是一批地址,那就把echo on后面的放到一个for /f 的do()里面,并把地址换成参数就行了。
胡之一哥
2015-11-21 · TA获得超过182个赞
知道小有建树答主
回答量:268
采纳率:0%
帮助的人:136万
展开全部
那说明这个批处理语法有错误,或者运行后隐藏在后台了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式