标题: [其他] 【已解决】有几个批处理问题求教 [打印本页]
作者: 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、
- 调用子程序应该使用 call,而不是 goto。
- 要结束子程序可使用 goto :eof 或者 exit /b。
其中 exit /b 的末尾可指定一个数字退出码(例如 exit /b 1234567890),之后能用 %errorlevel% 获取退出码。
- 子程序中的变量也是全局的,除非你在设置变量之前加了 setlocal
- :: 调用子程序示例
-
- @echo off
-
- set n=
- call :全局变量
- echo n=%n%
- echo,
-
- set n=
- call :变量不保存
- echo n=%n%
- echo errorlevel=%errorlevel%
-
- pause & exit
-
- :全局变量
- echo %0
- set n=123
- goto :eof
-
- :变量不保存
- setlocal
- echo %0
- set n=123
- exit /b 2015
复制代码
2、
判断sed执行成功?如果你的 sed 命令是错误的,sed 会提示错误,然后 errorlevel 会变成 1。
3、
没有 if n between 2 and 5 这样的写法。你可以把两个 if 写在同一行..- if %n% gtr 2 if %n% lss 5 echo "2<n<5"
复制代码
4、- :: if....else嵌套示例
-
- if "%n%" == "1" (
- echo 1
- ) else if "%n%" == "2" (
- echo 2
- ) else if "%n%" == "3" (
- echo 3
- ) else (
- echo -
- )
复制代码
作者: DAIC 时间: 2015-2-17 10:59
第二个问题的答案:- @echo off
- sed "s/a/A/" 1.txt
- if %errorlevel% equ 0 (
- echo Success
- ) else (
- echo Fail
- )
- pause
复制代码
作者: DAIC 时间: 2015-2-17 11:01
第三个问题的答案:
“一行可以搞定的代码”是非常糟糕的代码风格,强烈建议使用 if ... else ...
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |