标题: [文本处理] [已解决]批处理如何除去本行的空格? [打印本页]
作者: batpro 时间: 2011-6-13 23:05 标题: [已解决]批处理如何除去本行的空格?
1.txt中
C:\Documents and Settings\Administrator\「开始」菜单\程序\启动\32B236.lnk
(此处有一空格)C:\WINDOWS\system32\431CAD\32B236.EXE
要求生成
C:\Documents and Settings\Administrator\「开始」菜单\程序\启动\32B236.lnk
C:\WINDOWS\system32\431CAD\32B236.EXE
希望用精简的代码 谢谢
新手边学边写
作者: 601997526 时间: 2011-6-13 23:20
这个以前好像在哪见人写过- @echo off
- for /f "tokens=*" %%i in (1.txt) do echo,%%i>>2.txt
复制代码
作者: applba 时间: 2011-6-14 00:47
为什么要用精简的代码?既然是新手就要用基础的代码。
等你进阶了,自然就可以写出精简的代码。
作者: batpro 时间: 2011-6-14 12:51
3# applba
哦,谢谢
作者: Batcher 时间: 2011-6-14 13:02
- sed "s/^ //" a.txt | more >b.txt
复制代码
http://bbs.bathome.net/thread-1114-1-1.html
作者: Hello123World 时间: 2011-6-14 15:50
2# 601997526
这空格是怎么去掉的呢?- @echo off
- set a= hello
- echo,%a%
- pause>nul
复制代码
上面这个去不掉,能解释一下原理吗
作者: CrLf 时间: 2011-6-14 16:47
本帖最后由 zm900612 于 2011-6-14 17:55 编辑
6# Hello123World
for /f中的默认分隔符"delims=[tab][半角空格]"(原以为全角空格也是默认分隔符,多谢楼下两位指正),默认tokens=1代表以delims中的设置为分隔符取字符串的第一节。
当tokens=*时代表取从第一节开始之后的所有内容,也就是说,它把字符串开头的分隔符舍弃了,也就起到了去除多余空格的目的。
echo;%a%的想法不错,不过在echo中貌似是不可行的,倒是在win7的set /p中可以,因为win7的set /p会自动舍弃字符串最开始的空格。
作者: 我是马甲 时间: 2011-6-14 17:18
全角空格 貌似不是
作者: tmplinshi 时间: 2011-6-14 17:26
全角空格 貌似不是
我是马甲 发表于 2011-6-14 17:18
经测试,确实不是。(测试环境: XP SP2)
作者: CrLf 时间: 2011-6-14 17:56
多谢纠错,已修正
作者: Hello123World 时间: 2011-6-15 21:07
看了7楼的代码,方明白是,惹的祸。
@echo off
for /f "tokens=*" %%i in (1.txt) do echo,%%i>>2.txt
这里echo 后面的,是多余的。
作者: Hello123World 时间: 2011-6-15 22:02
而且让我加深了对delims 和tokens 的理解,“delims=” 和 “tokens=*” 在这里区别就出来了(以前我一直是当做一样的作用在用)。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |