Board logo

标题: 请教一个问题,为什么我不能取变量a中的字符[,谢谢 [打印本页]

作者: wangyao     时间: 2007-7-12 10:12    标题: 请教一个问题,为什么我不能取变量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
作者: wangyao     时间: 2007-7-12 10:21    标题: 格式如下

[server check]

不能读取第一个字符
作者: wudixin96     时间: 2007-7-12 10:29
哪来的变量%a%???

即 set "t=%a:~0,1%                 "%a:~0,2"=="["
作者: wangyao     时间: 2007-7-12 10:38    标题: 那问一下,去%%a变量中的第一个字符[ 该怎么写,谢谢

我查了很多资料,好像都不对,谢谢
作者: wudixin96     时间: 2007-7-12 11:21
set "t=%a:~0,1% 是想取到serverip.inf中的第一个字符吗?

为何不
set "t=%%a"
set "t=%t:~0,1%
??

这里"%a:~0,2"=="[" 也??
作者: luowei14     时间: 2007-7-12 19:00
变量A在哪...怎么个取法

[ Last edited by luowei14 on 2007-7-12 at 07:01 PM ]
作者: wangyao     时间: 2007-7-13 09:20    标题: 如下

for /f "tokens=1,2" %%a in (serverip.inf)
从文本中取出[network]放入%%a
然后判断第一个字符是否是[,  就是这样子,
我试了好多办法多实现不了,请指教,谢谢.
作者: Climbing     时间: 2007-7-13 10:06
试试这样,是可以的:
@set _debug=
@echo %_debug% off & setlocal ENABLEDELAYEDEXPANSION
for /f "tokens=*" %%i in ('dir /a-d/b') do (
        set var=%%i
        echo !var!                ---        !var:~0,1!)

作者: wangyao     时间: 2007-7-13 10:17    标题: 如下

如何判断取出的值是"[",我试了,好象报驱动盘符不对,
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%
   
)
作者: wangyao     时间: 2007-7-13 10:22    标题: 如题,

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!能正确显示结果了,可条件判断该怎么做呢.
谢谢 
作者: Climbing     时间: 2007-7-13 10:27
这两行应该写在一行:

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

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

批处理不是C语言,你不能按照C的语法去写批处理。
作者: wangyao     时间: 2007-7-13 10:40    标题: 如题,

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,为什么这里不可以
还有能不能给参考资料看看,关于编写格式方面的,谢谢了.
作者: wangyao     时间: 2007-7-13 11:13    标题: 总算解决了,谢谢climbing

总算解决了,谢谢climbing
作者: Climbing     时间: 2007-7-13 11:28
IF EXIST filename. (
     del filename.
) ELSE (
     echo filename. missing.
)

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

其实没有什么参考资料,最好的参考资料就是微软的帮助。例如:
if /?