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

[文件操作] 【已解决】批处理如何将一个文本内容修改后写入/输出到源文件/原文件?

[复制链接]
发表于 2016-9-11 18:39:05 | 显示全部楼层 |阅读模式
本帖最后由 idos 于 2016-9-13 10:23 编辑

例如:有一个名为test.txt的文本文件,内容如下

2016-1    20
2016-9    30
2016-6    40
2016-8    50
2016-2    60
2016-4    70
2016-1    80

我写一个批处理文件,使最后的两位数都改成15。然后问题来了,怎样输出到源文件中,并且源文件只能包括执行结果的信息?
这是我写的代码:
  1. @echo off
  2. for /f %%i in (test.txt) do (
  3.         echo %%i   15

  4. )>>完成.txt
  5. pause
复制代码
发表于 2016-9-11 18:56:10 | 显示全部楼层
两种办法

1.常规做法:
  1. @echo off
  2. (for /f %%i in (test.txt) do (
  3.         echo %%i   15
  4. ))>完成.txt
  5. ren 完成.txt test.txt
  6. pause
复制代码
2.玩技巧:
  1. @echo off
  2. %1 %0 :1 | %0 :2 & exit /b
  3. if %1==:1 (
  4.    for /f %%i in (test.txt) do (
  5.         echo %%i   15
  6.    )
  7. ) else if %1==:2 (
  8.    find /v "" >test.txt
  9. )
复制代码

评分

参与人数 1技术 +1 收起 理由
idos + 1 第二个不懂,需要好好研究.....

查看全部评分

 楼主| 发表于 2016-9-11 19:07:57 | 显示全部楼层
回复 2# CrLf


    第一个会提示有重名文件,不成功。第二个可以,效果很好,但没看懂是什么意思
发表于 2016-9-11 19:18:52 | 显示全部楼层
回复 3# idos


@echo off
(for /f %%i in (test.txt) do (
        echo %%i   15
))>完成.txt
move /y 完成.txt test.txt

评分

参与人数 2技术 +2 收起 理由
idos + 1 很厉害
CrLf + 1 感谢指正

查看全部评分

发表于 2016-9-11 19:26:11 | 显示全部楼层
顺便说一句,还有一种办法,这里以输出 type 的结果到源文件为例
  1. type test.txt | sort /+65535 | sort /+65535 /o:test.txt
复制代码
兼容性还可以,不过其实并没什么必要
发表于 2016-9-11 21:23:11 | 显示全部楼层
本帖最后由 pcl_test 于 2016-9-11 21:57 编辑

路过
  1. powershell -c "(gc 'test.txt'|%%{$_.split()[0]+'    15'})|Out-File 'test.txt'"&pause
复制代码
第三方
  1. sed -i -r "s/\S+$/15/" "test.txt"&pause
复制代码
  1. gawk "{s=s""$1"    15\n"}END{printf s>"test.txt"}" "test.txt"&pause
复制代码
发表于 2016-9-11 21:53:05 | 显示全部楼层
友情提示,gawk等某些方案直接修改原文件容易导致数据丢失,尤其是大文件。请务必谨慎使用。
用临时文件过渡一下比较安全。
发表于 2016-9-12 04:54:28 | 显示全部楼层
回复 7# Batcher


    从没遇到过 gawk 丢失数据的情况,处理过 1G+ 的大文件,也没什么问题,可否举个极端的例子?
 楼主| 发表于 2016-9-12 09:04:00 | 显示全部楼层
回复 6# pcl_test


    不是批处理,但也挺厉害的....
发表于 2016-9-12 11:12:10 | 显示全部楼层
回复 8# CrLf


    无法是速度慢点,一般极少需要处理大数据文本的,20mb算是无压力的
 楼主| 发表于 2016-9-13 10:23:13 | 显示全部楼层
谢谢各位的耐心解答....如果有别的方法,也可以继续列出来
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 07:29 , Processed in 0.020990 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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