日期:2014-05-17  浏览次数:21021 次

批处理代码出错问题的原因

@echo off
 for /f %%i in (ip.txt) do (
   net use \\%%i password /u:%%i\administrator
   if errorlevel 0 (
      copy test.exe \\%%i\c$\
      for /f "tokens=4-6 delims=: " %%a in ('net time \\computerName') do (
        set HRMODE=%%a
        if "%%b"=="08" (set /a HR=8) else (if "%%b"=="09" (set /a HR=9) else (set /a HR=%%b)) 
        if "%%c"=="08" (set /a MIN=9) else (if "%%c"=="09" (set /a MIN=10) else (set /a MIN=%%c+1)) 
      )
      if %MIN% GEQ 60 (
         set /a MIN-=60
         set /a HR+=1
      )
      if "%HRMODE%"=="上午" (if %HR%==12 (set HR=0))
      if "%HRMODE%"=="下午" (if %HR% NEQ 12 (set /a HR+=12))
      if %HR% GEQ 24 (set HR=0)
      if %MIN% LEQ 9 (set MIN=0%MIN%)
      if %HR% LEQ 9 (set HR=0%HR%)
      at \\computerName %HR%:%MIN% c:\test.exe
      if errorlevel 1 @echo "AT error."
    )else @echo "COPY error."
    net use \\%%i /del
  )else @echo "NET USE error."
exit


上面这段代码老是提示“这个时候不能有 60”,什么原因啊,麻烦帮我看下!
------解决方案--------------------
if %MIN% GEQ 60 (  这段代码报错,什么原因?真奇怪!
------解决方案--------------------
先检查一下你的括号匹配,如果没问题再核对一下获取的时间参数是否正确
------解决方案--------------------
%MIN%为空
------解决方案--------------------
我测了没有语法问题,把获取的时间参数的代码单独测试也没问题啊,有点晕!
------解决方案--------------------
引用:
我测了没有语法问题,把获取的时间参数的代码单独测试也没问题啊,有点晕!


再仔细检查一下括号匹配
------解决方案--------------------
括号是最早检查的没问题,代码能帮我测试下不,我感觉没问题
------解决方案--------------------
给你整理了一下,你再试试看


@echo off&setlocal enabledelayedexpansion
  for /f %%i in (ip.txt) do (
    net use \\%%i PassWord /u:%%i\administrator
    if errorlevel==0 (
       copy test.exe \\%%i\c$\
       if errorlevel==0 (
         for /f "tokens=4-6 delims=: " %%a in ('net time \\%%i') do (
           set HRMODE=%%a