Board logo

标题: [数值计算] [已解决]批处理自定义函数的可以实现变量的传递吗? [打印本页]

作者: hijackle    时间: 2013-5-13 14:20     标题: [已解决]批处理自定义函数的可以实现变量的传递吗?

本帖最后由 hijackle 于 2013-5-13 22:10 编辑

大神们,问下,自定义函数的可以实现变量的传递吗?
  1. @echo off
  2. set aaa=我
  3. set bbb=你
  4. call :output %aaa%
  5. call :output %bbb%
  6. pause>nul
  7. :output %zzz%
  8. echo %zzz%>>test.txt
  9. goto :eof
复制代码
比如这个utput 我想后面加个变量,但是这个变量可以根据上面的传递过来,比如我call :output %aaa%
就会直接输出echo 我>>test.txt

可以实现吗?
作者: terse    时间: 2013-5-13 14:28

>>test.txt ECHO %1
作者: hijackle    时间: 2013-5-13 15:04

又要对不住你了,不好意思,老问题
追问下如果传递的变量中含有&,?和=咋办呢?*通配符暂时无视吧
继续上个帖子的范例吧
a.txt内容如下
singer=张信哲,张宇,韩红,陈奕迅,陈羽凡&胡海泉=羽泉,M?M,......(歌手名称很多,都是以,分割的)
song=回来,放不下心,盛夏的果实,........(歌曲名也很多,也都是以,分割的)

借用一下你之前的代码:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1* delims==" %%a in (a.txt) do (
  3.     set n=&set any=&set "str=%%b"
  4.     set str="!str:,=" "!"
  5.     set str=!str:?=!
  6.     for %%i in (!str!) do set any=!any! "!random!!random!!random!%%~i"
  7.     for /f "tokens=2 delims=" %%c in ('(for %%i in (!any!^) do echo %%i^)^|sort') do set str=%%c
  8.     echo !str:=?!
  9.     call :output !str:=?!
  10. )
  11. exit
  12. :output
  13. >>aaa.txt echo %1
  14. goto :eof
复制代码
貌似羽泉组合永远输出不了。
作者: apang    时间: 2013-5-13 15:38

本帖最后由 apang 于 2013-5-13 23:58 编辑

函数???
NB
作者: terse    时间: 2013-5-13 15:39

本帖最后由 terse 于 2013-5-13 15:41 编辑

回复 3# hijackle
变通一下呢
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1* delims==" %%a in (T.txt) do (
  3.     set any=&set "str=%%b"
  4.     set str="!str:,=" "!"
  5.     set str=!str:?=!
  6.     for %%i in (!str!) do set any=!any! "!random!!random!!random!%%~i"
  7.     for /f "tokens=2 delims=" %%c in ('(for %%i in (!any!^) do echo %%i^)^|sort') do set str=%%c
  8.     echo !str:=?!
  9.     call :output "!str:=?!"
  10. )
  11. PAUSE
  12. exit
  13. :output
  14. (for /f "tokens=*" %%i in (%1) do echo %%i)>>aaa.txt
  15. goto :eof
复制代码





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