Board logo

标题: [文本处理] 批处理文件中怎么只用一个%%i分行输出字符? [打印本页]

作者: canyuexiaolang    时间: 2011-12-17 15:45     标题: 批处理文件中怎么只用一个%%i分行输出字符?

  1. @echo offset "out=3,4;2,1\9,2;5,7;4,6"
  2. for /f "delims=\" %%i in (%out%) do echo %%i
  3. pause
复制代码
以\为分割符,分两行输出,结果是
3,4;2,1
9,2;5,7;4,6

不借助第三方,可否做到、、、
作者: 冷玉公子    时间: 2011-12-17 15:58

  1. @echo off
  2. set "out=3,4;2,1\9,2;5,7;4,6"
  3. for /f "tokens=1,2 delims=\" %%a in (%out%) do (
  4.     echo %%a
  5.     echo %%b
  6. pause
复制代码
这样就行了吗
作者: canyuexiaolang    时间: 2011-12-17 16:01

回复 2# 冷玉公子



   额。。只用一次%%i,否则也就不问了。。。。
我的代码只是范例,这个应该需要改动的
作者: jellyhk    时间: 2011-12-17 17:07

硬要用for是不行的!你用了delims=\
就说名有2个变量!如果2个变量能用1个变量显示出来,那还需要2个变量么?
  1. @echo off
  2. set "out=3,4;2,1\9,2;5,7;4,6"
  3. set a=%out:~0,7%
  4. set b=%out:~8%
  5. echo %a%
  6. echo %b%
  7. 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

  1. @echo off
  2. set "out=3,4;2,1\9,2;5,7;4,6"
  3. setlocal enabledelayedexpansion
  4. set result=!out:\=^
  5. !
  6. echo,!result!
  7. pause
复制代码

作者: canyuexiaolang    时间: 2011-12-17 19:31

好吧。。。这个让我折服了。。。
作者: jellyhk    时间: 2011-12-18 10:39

本帖最后由 jellyhk 于 2011-12-18 10:41 编辑
  1. set result=!out:\=^
  2. !
  3. 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