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

[挑战]批处理如何不换行输出以等号或引号开头的行?

如何不换行输出以等号或引号开头的行?即行末没有回车。
文本中不是所有行都这样,还可能有其他特殊字符。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

路过
  1. @echo off
  2. set str==123123=34
  3. if "%str:~,1%"=="=" set /p=%str%<nul
  4. pause
复制代码
---学无止境---

TOP

回复 2楼 的帖子

这种方法直接忽略。把它输出到文本是不一样的。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

总是感觉怪怪的。不知符不符合题意
  1. @echo off
  2. echo ^
  3. = I am from bathome ^
  4. "成功从这里开始"
  5. pause
复制代码

TOP

版主的意思应该是:
楼上的把你这个多行文本合并成一行试试?
你这个文本正好符合,既有等号开头也有引号开头,还要其他特殊字符。

TOP

1,处理后的结果是要显示的屏幕还是要输出到文本?
2,如果某行行首为=,那么是把这行与上一行合成一行,还是与下一行合成一行?
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

猜测可能是我在5楼说的那个意思

TOP

本帖最后由 523066680 于 2011-6-11 22:30 编辑

我是来钻空子的
注意在ntfs磁盘下运行
echo =>a.txt
fsutil file setzerodata offset=1 length=2 a.txt
fsutil把换行替换成 值为0的符号   
=号开头,木有错,也木有换行符……

TOP

引号处理不难,set/p=^"""<nul或者set/p=""^"<nul

等号试了下,感觉像是在对=替换的那种转义,,纳闷中。。

TOP

对于等号,空格,间接方法给前面加个换行符set/p=!lf!=<nul 输出,
但这样不是本质方法,绕弯子。。。

TOP

直接 findstr 可以吗?
  1. @echo off
  2. findstr ^^= %0
  3. pause&exit
  4. =
复制代码
当然,用 set /p 也口以的嘿,不过要先获取回车换行符:
  1. @echo off
  2. set hh=^
  3. set /p=@!hh!=<nul>tmp
  4. findstr /v "^$" tmp
复制代码

TOP

感觉难度不是很大
一个空格加一个回退符号应该可以解决大多数问题
  1. @echo off
  2. for /f "tokens=*" %%l in ('more +4 %~sf0') do set /p t= %%l<nul
  3. pause
  4. goto :eof
  5. test0:
  6. =test1:
  7. "test2:
  8. "test3:"
  9. ^test4:
  10. !test5!:
复制代码
天的白色影子

TOP

回复 12# qzwqzw


    先拜楼上三拜,前辈好久不见。不过话说输出到文本的时候怎么办呢?

TOP

嘿嘿
输出到文本的方法有两种
一是用变量拼接起来再用echo输出
不过如何综合处理各种特殊字符挺考验人的
  1. @echo off & setlocal EnableDelayedExpansion
  2. set line=-
  3. for /f "tokens=*" %%l in ('more +6 %~sf0') do set line=!line!%%l
  4. >test1.txt echo %line:~1%
  5. pause & goto :eof
  6. test0:
  7. =test1:
  8. "test2:
  9. "test3":
  10. ^test4:
  11. !test5!:
  12. %test6%:
  13. test7
复制代码

二是直接使用ASCODE生成的特殊echo输出
但如果在意控制键盘代码和字符集切换就比较麻烦
  1. @echo off & chcp 437>nul & graftabl 936>nul
  2. ECHO ,HP_,6P-B~1En0eqZ[SCj@_YQ2M@-@BINNNNN~BO!A>ECHO-.COM
  3. echo- ->nul
  4. (for /f "tokens=*" %%l in ('more +6 %~sf0') do echo- %%l)>test2.txt
  5. del echo-.com
  6. goto :eof
  7. test0:
  8. =test1:
  9. "test2:
  10. "test3":
  11. ^test4:
  12. !test5!:
  13. %test6%:
  14. test7
复制代码
1

评分人数

    • CrLf: 膜拜几乎失传的 ascodePB + 10 技术 + 1
天的白色影子

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f %%a in ('copy /z %0 nul') do set crlf=%%a^
  3. set<nul>tmp /p"=@!crlf!   123"
  4. findstr /v $ tmp
  5. echo 测试
  6. pause
复制代码

TOP

返回列表