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

[文本处理] [已解决]批处理如何除去本行的空格?

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   
希望用精简的代码 谢谢

新手边学边写
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

而且让我加深了对delims 和tokens 的理解,“delims=” 和 “tokens=*” 在这里区别就出来了(以前我一直是当做一样的作用在用)。

TOP

看了7楼的代码,方明白是,惹的祸。
@echo off
for /f "tokens=*" %%i in (1.txt) do echo,%%i>>2.txt

这里echo 后面的,是多余的。

TOP

多谢纠错,已修正

TOP

全角空格  貌似不是
我是马甲 发表于 2011-6-14 17:18

经测试,确实不是。(测试环境: XP SP2)

TOP

全角空格  貌似不是
1

评分人数

隐藏秘密最好的方法是把秘密当笑话说给所有人听。

TOP

本帖最后由 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会自动舍弃字符串最开始的空格。
1

评分人数

TOP

2# 601997526
这空格是怎么去掉的呢?
  1. @echo off
  2. set a=  hello
  3. echo,%a%
  4. pause>nul
复制代码
上面这个去不掉,能解释一下原理吗

TOP

  1. sed "s/^ //" a.txt | more >b.txt
复制代码
http://bbs.bathome.net/thread-1114-1-1.html
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

3# applba

哦,谢谢

TOP

为什么要用精简的代码?既然是新手就要用基础的代码。
等你进阶了,自然就可以写出精简的代码。

TOP

这个以前好像在哪见人写过
  1. @echo off
  2. for /f "tokens=*" %%i in (1.txt) do echo,%%i>>2.txt
复制代码
1

评分人数

TOP

返回列表