批处理文件读取和修改文本文件

时间:2012-02-05 21:19:52

标签: file batch-file windows-xp hosts

好的,基本上,我在纯文本记事本文件中有一个完整的链接列表,每个链接都在一个单独的行上。我想要做的就是在每个链接之前添加一些文本,特别是:127.0.0.1和几个空格。

所以这......

somelink.com 

变成这个......

127.0.0.1     somelink.com 

到目前为止,您可能已经猜到我正在尝试编辑文本文件的内容,以使其可用作Windows中的HOSTS文件。

所以我想要一些批处理文件代码,可以在.bat文件中执行,它基本上读取一个记事本文本文件,然后在每行的开头添加“127.0.0.1”,上面有文本。我猜这对于那些对MS DOS和批处理文件代码有一定了解的人来说可能是一段非常简单的代码,但是肯定不是我,而且我写过的唯一批处理文件就像现在一样得到了帮助。

感谢您提前获得的任何帮助,我们非常感谢。

3 个答案:

答案 0 :(得分:5)

阅读HELP FOR然后在命令提示符

中尝试此操作
  FOR /F "delims=" %a in (input.txt) do @echo 127.0.0.1   %a >>output.txt

这里有一些解释和一些注意事项,用一些更完整的功能扩展它并将其放在BAT文件中

  1. FOR是迭代输入文本文件行的命令。阅读http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/for.mspx

  2. 上的microsoft文档
  3. input.txt是包含您的域名列表的文本文件,它必须位于当前目录中

  4. output.txt将是包含前缀为127.0.0.1的域名列表的结果文件,它将在当前目录中创建

  5. 如果要创建BAT文件,则需要移动FOR命令并对其进行一点编辑,将%a循环变量名称更改为%%a

  6. 然后,您可以将BAT文件放在输入所在的当前目录以及创建输出的位置。

  7. 或者,您可以将BAT文件放在其他位置。在这种情况下,您需要以完整路径调用它。

  8. 或者您甚至可以将它放在一个特殊的目录中(我有自己的C:\Program Files\CMD)并将其添加到PATH系统变量中。请参阅www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/path.mspx?mfr=true如何更改当前会话的PATH。在这里ss64.com/nt/path.html您可以找到有关如何使PATH永久更改的一些解释。

  9. 此外,您可能想要为BAT文件添加一些灵活性,而不是使用常量input.txtoutput.txt文件名,将其替换为%1和{{1表示BAT文件的第一个和第二个命令行参数。

  10. 用户可能希望使用其文件名中包含空格的文件。他们可能会使用引号%2为名称指定它们。在这种情况下,您需要在FOR命令中添加一些咒语",以便在用户使用引号时不会破坏。

  11. 最后,您需要决定在输出文本文件已存在的情况下该怎么做,您需要考虑防止覆盖。

  12. 所以把所有这些部分放在一起,这是一个简短的BAT文件,可以帮助你入门......

    usebackq

    欢迎来到BAT编程并享受!

答案 1 :(得分:2)

我们走了!

(
Set /p line1=
Set /p line2=
Set /p line3=
Set /p line4=
)<Filename.txt
echo 127.0.0.1    %line1%>Filename.txt
echo 127.0.0.1    %line2%>>Filename.txt
echo 127.0.0.1    %line3%>>Filename.txt
echo 127.0.0.1    %line4%>>Filename.txt

这将读取文本文件的前四行,然后将您的内容和每一行放回到它来自的行中。 玩得开心!

答案 2 :(得分:0)

除了PA。的回答,如果您需要特定数量的空格,您可以将它们放入变量并将其添加到命令中。

  SET spaces=          # to the left is 10 spaces
  FOR /F "delims=" %a in (input.txt) do @echo 127.0.0.1%spaces%%a>>output.txt

所以输出将是

127.0.0.1          somelink.com

Batch-File flavor:

  SET spaces=          # to the left is 10 spaces
  FOR /F "delims=" %%a in (input.txt) do @echo 127.0.0.1%spaces%%%a>>output.txt