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=主机未接通。。。。
这是为什么? 展开
+++++++++++++++++++++++++++++++++++++++++++++++++
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=主机未接通。。。。
这是为什么? 展开
2个回答
展开全部
变量延迟后的%变!是要在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()里面,并把地址换成参数就行了。
其实您的批处理就是想测试一个地址是否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()里面,并把地址换成参数就行了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询