中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-05 11:11
48,038 主题排行 / 350,123 发帖 / 今日 1 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » 请教一个问题,为什么我不能取变量a中的字符[,谢谢
可打印版本  1,014 / 13
第1楼 wangyao 发表于 2007-07-12 10:12
新手上路 发帖 8 积分 18
请教一个问题,为什么我不能取变量a中的字符[,谢谢
@echo off
rem set errorlevel=
set yymmddhh=%date:~6,4%%date:~0,2%%date:~3,2%
set hh=%time:~0,2%
set hh=%hh: =0%
set yymmddhh=%yymmddhh%-%hh%.log
for /f "tokens=1,2" %%a in (serverip.inf) do (
set "t=%a:~0,1%
echo %%t
if "%a:~0,2"=="[" (
echo %%a>>%yymmddhh%-%hh%.log
) else (
ping -n 1 "%%a" | find "out"
if not errorlevel 1 echo Server %%a is in unhealthy condition!>>%yymmddhh%
)
)

if exist %yymmddhh% goto error
echo All server are running well. It's a wonderful day!>>%yymmddhh%
goto end
:error
echo Some servers are suffering from problems, please check them in depth!>>%yymmddhh%
:end
第2楼 wangyao 发表于 2007-07-12 10:21
新手上路 发帖 8 积分 18
格式如下
[server check]

不能读取第一个字符
第3楼 wudixin96 发表于 2007-07-12 10:29
银牌会员 发帖 931 积分 1,928
哪来的变量%a%???

即 set "t=%a:~0,1% "%a:~0,2"=="["
第4楼 wangyao 发表于 2007-07-12 10:38
新手上路 发帖 8 积分 18
那问一下,去%%a变量中的第一个字符[ 该怎么写,谢谢
我查了很多资料,好像都不对,谢谢
第5楼 wudixin96 发表于 2007-07-12 11:21
银牌会员 发帖 931 积分 1,928
set "t=%a:~0,1% 是想取到serverip.inf中的第一个字符吗?

为何不
??

这里"%a:~0,2"=="
第6楼 luowei14 发表于 2007-07-12 19:00
初级用户 发帖 98 积分 193
变量A在哪...怎么个取法

[ Last edited by luowei14 on 2007-7-12 at 07:01 PM ]
第7楼 wangyao 发表于 2007-07-13 09:20
新手上路 发帖 8 积分 18
如下
for /f "tokens=1,2" %%a in (serverip.inf)
从文本中取出[network]放入%%a
然后判断第一个字符是否是[, 就是这样子,
我试了好多办法多实现不了,请指教,谢谢.
第8楼 Climbing 发表于 2007-07-13 10:06
铂金会员 发帖 2,753 积分 6,962 来自 河北保定
试试这样,是可以的:

第9楼 wangyao 发表于 2007-07-13 10:17
新手上路 发帖 8 积分 18
如下
如何判断取出的值是"[",我试了,好象报驱动盘符不对,
for /f "tokens=1,2" %%a in (serverip.inf) do (
set t=%%a
!t:~0,1!
echo !t!

ping -n 1 "%%a" | find "out"
if not errorlevel 1 echo Server %%a is in unhealthy condition!>>%yymmddhh%

)
第10楼 wangyao 发表于 2007-07-13 10:22
新手上路 发帖 8 积分 18
如题,
for /f "tokens=1,2" %%a in (serverip.inf) do (
set t=%%a
if "!t:~0,1!" == "["
echo "wonderful"

ping -n 1 "%%a" | find "out"
if not errorlevel 1 echo Server %%a is in unhealthy condition!>>%yymmddhh%

)
我如何做条件判断,echo !t:~0,1!能正确显示结果了,可条件判断该怎么做呢.
谢谢 
第11楼 Climbing 发表于 2007-07-13 10:27
铂金会员 发帖 2,753 积分 6,962 来自 河北保定
这两行应该写在一行:

if "!t:~0,1!" == "["
echo "wonderful"

即:
if "!t:~0,1!" == "[" echo "wonderful"

批处理不是C语言,你不能按照C的语法去写批处理。
第12楼 wangyao 发表于 2007-07-13 10:40
新手上路 发帖 8 积分 18
如题,
for /f "tokens=1,2" %%a in (serverip.inf) do (
set t=%%a
if "!t:~0,1!"=="["
( echo %%a %%b
)
else(
ping -n 1 "%%a" | find "out"
if not errorlevel 1 echo Server %%a is in unhealthy condition!>>%yymmddhh%
)

)

这样写可以吗,谢谢,好像有问题.有些文章能用ELSE,为什么这里不可以
还有能不能给参考资料看看,关于编写格式方面的,谢谢了.
第13楼 wangyao 发表于 2007-07-13 11:13
新手上路 发帖 8 积分 18
总算解决了,谢谢climbing
总算解决了,谢谢climbing
第14楼 Climbing 发表于 2007-07-13 11:28
铂金会员 发帖 2,753 积分 6,962 来自 河北保定
IF EXIST filename. (
del filename.
) ELSE (
echo filename. missing.
)

上面是标准的写法,注意()是怎么用的。

其实没有什么参考资料,最好的参考资料就是微软的帮助。例如:
if /?
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023