标题: [文本处理] 批处理文件中怎么只用一个%%i分行输出字符? [打印本页]
作者: canyuexiaolang 时间: 2011-12-17 15:45 标题: 批处理文件中怎么只用一个%%i分行输出字符?
- @echo offset "out=3,4;2,1\9,2;5,7;4,6"
- for /f "delims=\" %%i in (%out%) do echo %%i
- pause
复制代码
以\为分割符,分两行输出,结果是
3,4;2,1
9,2;5,7;4,6
不借助第三方,可否做到、、、
作者: 冷玉公子 时间: 2011-12-17 15:58
- @echo off
- set "out=3,4;2,1\9,2;5,7;4,6"
- for /f "tokens=1,2 delims=\" %%a in (%out%) do (
- echo %%a
- echo %%b
- pause
复制代码
这样就行了吗
作者: canyuexiaolang 时间: 2011-12-17 16:01
回复 2# 冷玉公子
额。。只用一次%%i,否则也就不问了。。。。
我的代码只是范例,这个应该需要改动的
作者: jellyhk 时间: 2011-12-17 17:07
硬要用for是不行的!你用了delims=\
就说名有2个变量!如果2个变量能用1个变量显示出来,那还需要2个变量么?- @echo off
- set "out=3,4;2,1\9,2;5,7;4,6"
- set a=%out:~0,7%
- set b=%out:~8%
- echo %a%
- echo %b%
- pause
复制代码
作者: awk 时间: 2011-12-17 17:15
回复 3# canyuexiaolang
请说说这个需求怎么改
作者: canyuexiaolang 时间: 2011-12-17 17:44
回复 5# awk
set "out=3,4;2,1\9,2;5,7;4,6"
以\为分割符,分两行输出,结果是
3,4;2,1
9,2;5,7;4,6
只用一次%%i
或许不用for吧..
作者: awk 时间: 2011-12-17 17:50
回复 6# canyuexiaolang
2楼那个不就是只用了一次吗,没有用第二次啊。
作者: awk 时间: 2011-12-17 18:01
- @echo off
- set "out=3,4;2,1\9,2;5,7;4,6"
- setlocal enabledelayedexpansion
- set result=!out:\=^
-
- !
- echo,!result!
- pause
复制代码
作者: canyuexiaolang 时间: 2011-12-17 19:31
好吧。。。这个让我折服了。。。
作者: jellyhk 时间: 2011-12-18 10:39
本帖最后由 jellyhk 于 2011-12-18 10:41 编辑
- set result=!out:\=^
-
- !
- echo,!result!
复制代码
8楼的代码谁能帮忙解释下!看不懂!
第1行:
=!out:\=^ 这个是从哪里变化出来的什么意思?
第3行:
为什么要单独用!
第4行:为什么echo后要加个逗号
作者: awk 时间: 2011-12-18 11:51
回复 10# jellyhk
把\替换成换行
作者: jellyhk 时间: 2011-12-18 13:37
本帖最后由 jellyhk 于 2011-12-18 13:39 编辑
回复 11# awk
啊 !一句点醒梦中人啊!
\=^
!
因为^把换行转义!所以第2行的行替换\
- -!!
居然!!能分开!
这样写都行!哎 !你是怎么想出来的?
作者: awk 时间: 2011-12-18 13:45
回复 12# jellyhk
我也是看到别人那样写的
作者: Hello123World 时间: 2011-12-20 16:28
这种写法也用过、也问过,但是其原理还是没有明白,只好暂存疑问在心底。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |