标题: [文本处理] call传递的参数中带有引号和空格,导致传递后被分割 [打印本页]
作者: 踏沙行 时间: 2018-8-30 05:22 标题: call传递的参数中带有引号和空格,导致传递后被分割
本帖最后由 踏沙行 于 2018-8-30 05:31 编辑
已知:J:\1.txt内容为:- "Key k" : "T1=abc def gh"
- "Value v": "T2=IJK lmn OP"
- " se sf" : " T3= FLK LK sEL"
- " S4 s " : FEEL DEEP File txt
复制代码
使用call代码如下:- @echo off
- for /f "tokens=1,2 delims=:" %%a in (J:\1.txt) do call :lp "%%a";"%%b" c
- pause&exit
-
- :lp
- echo,%1;%2
- goto:eof
复制代码
结果,%1,%2会自动将传过来的参数按引号和空格为标记分割,即使参数用引号包括
结果为:- ""Key;k" "
- " "Value;v""
- " ";se
- " ";S4
复制代码
如果%%a和%%b的引号不包含空格,倒是可以正常传递。
请问,怎么让传递参数时,内容不被分割?
作者: cfwyy77_bat 时间: 2018-8-30 08:48
我感觉 这个参数传的有点矛盾了,原文本有引号的,%%a 套一层引号,比如第一个相当于""Key k"" ,原来的引号就废了,空格隔开了,两边的引号成对了只引了个空 。
而原文本没有引号的,而有空分隔的,想做为一个整体,势必就要用引号包含。
所以先把你的原文本FEEL DEEP File txt 用引号先包含,再%%a,%%b 去掉引号?
或者还有种耍赖的方法,不用改原文,%%a,%%b 去掉引号,再把 lp 的echo,%1,%2改成 echo %* 管你分成几个参数传- -
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |