标题: [文本处理] 批处理怎样向标签传入一个变量返回另一个值? [打印本页]
作者: wgf4242 时间: 2011-2-28 11:31 标题: 批处理怎样向标签传入一个变量返回另一个值?
@echo off set ss=a
call :test %ss%
echo %ss%
goto :EOF
:test
set %1=改变值
Q1. 这样写不行啊。我想改变一下变量的值。
Q2. 除了call :test %ss%这种方法还有什么办法能调用么?
作者: batman 时间: 2011-2-28 11:46
- @echo off&setlocal enabledelayedexpansion
- set "ss=^!a^!"
- call :test %ss%
- echo %ss%
- pause&goto :eof
- :test
- set "a=bathome"
复制代码
作者: batman 时间: 2011-2-28 11:47
事实上可以直接赋值:- @echo off&setlocal enabledelayedexpansion
- set "ss=^!a^!"
- set "a=bathome"
- echo %ss%&pause
复制代码
作者: wgf4242 时间: 2011-2-28 12:19
我不想用 set "a=bathome"。。。要是变量不叫a还得改名。
能不能用%1这种来替换传入参数。或者有没有办法弄个返回值出来?
[ 本帖最后由 wgf4242 于 2011-2-28 12:20 编辑 ]
作者: CrLf 时间: 2011-2-28 13:07
%1 %2这样的参数据我所知只能通过调用(文件或标签,目前没找到调用命令时赋值的办法)来赋值- %1 call :123 456
- echo %2
- exit
-
- :123
- echo 456
- %0 :: 囧
复制代码
作者: CrLf 时间: 2011-2-28 13:08
当然也可以用exit /b来设置返回值
作者: batman 时间: 2011-2-28 13:43
这样不行?- @echo off
- set "ss=a"
- call :test ss
- echo %ss%
- pause&goto :eof
- :test
- set "%1=bathome"
复制代码
作者: wgf4242 时间: 2011-2-28 14:40
这个好。。。谢啦。。
@batman,为什么set 后面加引号?有什么说法么?
(不加引号确实是不行)
作者: wc726842270 时间: 2011-2-28 15:31 标题: 回复 8楼 的帖子
防止特殊符号对其分组,有兴趣不防试一下
SET A B=9或SET A=S 0 K
作者: CrLf 时间: 2011-2-28 16:10
我也发一个,另类变量名的设置及其调用:- @echo off&setlocal enabledelayedexpansion
- set "ss=a"
- call :test ss
- echo ss=%ss%
- echo !%%1!
- set|find "%%"
- pause&goto :eof
- :test
- set "%%1=bathome"
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |