Board logo

标题: [其他] 【已解决】有几个批处理问题求教 [打印本页]

作者: chouxia    时间: 2015-2-16 21:00     标题: 【已解决】有几个批处理问题求教

本帖最后由 chouxia 于 2015-4-16 16:30 编辑

首先祝大家春节快乐!
问题如下:
1、在批处理用如何使子程序返回?
举例:想让回显显示okok。应该怎么调用:2?我记得是不是有个返回的指令之类的。如果真有这样的指令,返回后的变量是怎么处理的?
:1
echo ok
goto 2
set a=100
echo ok ok
echo %a
:2
echo ko
set a=200
2、sed.exe的errorleve哪位能给一份?
如果这个没有的话,我怎么判断sed执行成功?
加循环判断吗?
3、判断某个变量值的范围。大于什么小于什么。有什么一行可以搞定的代码吗?
请给出几种代码让我学习下。
谢谢
4、if....else嵌套的时候到底是怎么执行的?实例看着迷糊。麻烦哪位解释一下。
作者: tmplinshi    时间: 2015-2-17 06:42

本帖最后由 tmplinshi 于 2015-2-17 06:51 编辑

1、
  1. :: 调用子程序示例
  2. @echo off
  3. set n=
  4. call :全局变量
  5. echo n=%n%
  6. echo,
  7. set n=
  8. call :变量不保存
  9. echo n=%n%
  10. echo errorlevel=%errorlevel%
  11. pause & exit
  12. :全局变量
  13. echo %0
  14. set n=123
  15. goto :eof
  16. :变量不保存
  17. setlocal
  18. echo %0
  19. set n=123
  20. exit /b 2015
复制代码
2、
判断sed执行成功?如果你的 sed 命令是错误的,sed 会提示错误,然后 errorlevel 会变成 1。

3、
没有 if n between 2 and 5 这样的写法。你可以把两个 if 写在同一行..
  1. if %n% gtr 2 if %n% lss 5 echo "2<n<5"
复制代码
4、
  1. :: if....else嵌套示例
  2. if "%n%" == "1" (
  3. echo 1
  4. ) else if "%n%" == "2" (
  5. echo 2
  6. ) else if "%n%" == "3" (
  7. echo 3
  8. ) else (
  9. echo -
  10. )
复制代码

作者: DAIC    时间: 2015-2-17 10:59

第二个问题的答案:
  1. @echo off
  2. sed "s/a/A/" 1.txt
  3. if %errorlevel% equ 0 (
  4.     echo Success
  5. ) else (
  6.     echo Fail
  7. )
  8. pause
复制代码

作者: DAIC    时间: 2015-2-17 11:01

第三个问题的答案:
“一行可以搞定的代码”是非常糟糕的代码风格,强烈建议使用 if ... else ...




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2