2009-10-01 257 views
6

有没有办法用批处理文件替换文本文件中的某些字符?用批处理文件替换文本文件中的字符

我没有找到任何命令来做到这一点。

+0

你能举一个你想要替换的例子吗(之前和之后)? – akf 2009-10-01 13:52:52

+0

我只是想在文本文件中用空字符替换'<'的所有出现。 – 2009-10-02 08:02:45

回答

4

简单的回答是“不,不是基本的Windows实用程序”

但随着其他答案建议,有很多unix平台在那里,你想什么做的。参加gnuwin32 packages

编辑:

好吧,我修改我的严格的 “否”。根据您的任务和操作系统的复杂程度,可能有办法做到这一点。当使用Windows 2000或更高版本时,cmd提供了可以使用的命令扩展。

其基本思想是使用FOR循环遍历输入文件的每一行,然后使用SET命令提供的字符串替换来替换您的字符。

我手头没有解决方案,但你可以自己尝试,使用this相当酷的网站infromation。 FOR循环语法请看herehere用于字符串替换。

+0

为gnuwin32 +1。 – 2009-10-01 14:00:59

+2

迭代文件的基本问题是,当它包含'&',''''或'>'等特殊字符时,会变得混乱。投出单数的单引号,所有投注都关闭。当行中有奇数个引号时,还没有找到正确转义这些字符的方法。否则,它很容易,但很混乱。 – Joey 2009-10-01 17:58:16

+0

哦,还有一件事:'for'跳过空行。如果你需要这个文件来存活,那么你必须寻找其他解决方案。 – Joey 2010-07-01 16:21:26

0

您可以搜索像GREP这样的命令行程序,您可以从批处理中调用该批处理,该批处理将替换字符串和文件并为您执行交换。

+0

grep用来执行搜索/过滤...甚至wikipedia都知道:http://en.wikipedia.org/wiki/Grep – enguerran 2009-10-01 14:29:05

+0

事实上,sed更专注于该任务,但仅供参考,有Windows/DOS允许替换的grep变种。 – Deverill 2009-10-01 14:29:22

0

您可以使用Unix命令行实用程序“tr”的DOS端口。

一个免费的DOS端口可以是found here,我喜欢的其中之一(有很多不同的)是“UXUTL-全面收集DOS命令行Unix工具”。

好处是,你会得到一个令人难以置信的有用命令的全部组合,而不仅仅是tr。

1

您可以安装unxutils然后做

sed "s/WORD_FROM/WORD_TO/" file_name > changed.file.name 

改变的话 或

cat file|tr "a" "b" > changed.file.name 

改变字符

1

用sed空:

sed -i 's/FROM/TO/g' filename.txt 

sed可以下载here,适用于各种平台。

1

您必须使用WIN32 SED并查看官方gnu sed页面以获取解释。它真的很强大:

> sed "s/WORD_FROM/WORD_TO/" file_name > changed.file.name 
0

即使这个问题是很老,未来的读者可能有兴趣知道,如果你想有一个小的exe没有依赖关系刚刚替换文本,我建议使用​​。

相关问题