[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理文件中怎么只用一个%%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

不借助第三方,可否做到、、、

这种写法也用过、也问过,但是其原理还是没有明白,只好暂存疑问在心底。

TOP

回复 12# jellyhk


我也是看到别人那样写的

TOP

本帖最后由 jellyhk 于 2011-12-18 13:39 编辑

回复 11# awk
啊 !一句点醒梦中人啊!
\=^

!
因为^把换行转义!所以第2行的行替换\
- -!!
居然!!能分开!
这样写都行!哎 !你是怎么想出来的?
本人已死!不用联系!~
要联系下来联系!~~

TOP

回复 10# jellyhk


把\替换成换行

TOP

本帖最后由 jellyhk 于 2011-12-18 10:41 编辑
  1. set result=!out:\=^
  2. !
  3. echo,!result!
复制代码
8楼的代码谁能帮忙解释下!看不懂!
第1行:
=!out:\=^ 这个是从哪里变化出来的什么意思?
第3行:
为什么要单独用!
第4行:为什么echo后要加个逗号
本人已死!不用联系!~
要联系下来联系!~~

TOP

好吧。。。这个让我折服了。。。

TOP

  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
复制代码
2

评分人数

    • jellyhk: 牛!技术 + 1
    • CrLf: 思路灵活,一招致命技术 + 1

TOP

回复 6# canyuexiaolang


2楼那个不就是只用了一次吗,没有用第二次啊。

TOP

回复 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吧..

TOP

回复 3# canyuexiaolang


请说说这个需求怎么改

TOP

硬要用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
复制代码
本人已死!不用联系!~
要联系下来联系!~~

TOP

回复 2# 冷玉公子



   额。。只用一次%%i,否则也就不问了。。。。
我的代码只是范例,这个应该需要改动的

TOP

  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
复制代码
这样就行了吗

TOP

返回列表