找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24660|回复: 7

[文本处理] BAT替换txt文本后多出了3个字节怎么回事?

[复制链接]
发表于 2013-10-29 22:31:36 | 显示全部楼层 |阅读模式
本人新学生,代码如下:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f %%a in ('type a.txt') do (
  4. set str=%%a
  5. set "str=!str:测试=测试!"
  6. echo !str! >>b.txt)
复制代码
文件a.txt内容只有汉字两个占4个字节,用相同的内容替换后变成b.txt占7个字节了,请教一下前辈上面代码怎么改才能保持原文件大小?或用其它代码删去后面多出的3字节内容,谢谢。
发表于 2013-10-29 23:51:57 | 显示全部楼层
改 ECHO 为SET/P试
  1. set/p=!str!<nul>>b.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
非常感谢 + 1 乐于助人

查看全部评分

发表于 2013-10-30 08:43:41 | 显示全部楼层
使用>或>>重定向后会自动产生一个空行,换行符占两个字节,
echo !str! >>b.txt你这句后面多了一个空格占一个字节所以一共有7个字节.
发表于 2013-10-30 09:10:16 | 显示全部楼层
这样可以避免行尾多余的空格:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f %%a in ('type a.txt') do (
  4.     set str=%%a
  5.     set "str=!str:测试=测试!"
  6.     >>b.txt echo !str!
  7. )
复制代码
这样可以避免行尾多余的空格,并且提高效率:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f %%a in ('type a.txt') do (
  4.     set str=%%a
  5.     set "str=!str:测试=测试!"
  6.     echo !str!
  7. ))>b.txt
复制代码
发表于 2013-10-30 09:26:36 | 显示全部楼层
只要!str! 后多按了空格怎么都避免不了吧,echo,!str!效率更高。
 楼主| 发表于 2013-10-31 00:03:02 | 显示全部楼层
回复 2# terse
谢谢前辈,问题解决了
 楼主| 发表于 2013-10-31 00:03:59 | 显示全部楼层
回复 4# DAIC


    多谢解答
 楼主| 发表于 2013-10-31 00:05:31 | 显示全部楼层
回复 5# foxJL


    代码已改,问题解决了,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 23:06 , Processed in 0.015223 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表