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

问题描述:

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

所以这...

somelink.com 

变成这样...

127.0.0.1  somelink.com 

现在,你可能已经猜到,我试图编辑一个文本文件的内容,以它可用作Windows中的HOSTS文件。

所以我想要一些批处理文件代码,在基本上读取记事本文本文件的.bat文件中执行,然后在每行文本开头添加“127.0.0.1”。我猜测这可能是一些非常简单的代码,用于具有MS DOS和批处理文件代码知识的人,但这绝对不是我,而且我写过的唯一批处理文件已经有了像现在这样的帮助。

感谢任何和所有帮助提前与此,它真的很感激。

阅读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. input.txt阅读Microsoft文档包含您的域名列表的文本文件,它必须驻留在当前目录

  3. output.txt将结果文件将包含前缀的域名列表用127.0.0.1,它会在当前目录下创建

  4. 如果你想创建一个BAT文件,你需要移动指挥和编辑它一点点,改变%a循环变量名是%%a

  5. 您可以然后将BAT文件无论是在当前目录下,你的输入和居住在输出将被创建。

  6. Alternativelly,您可以将您的BAT文件,在其他地方。在这种情况下,您需要使用完整路径调用它。或者你甚至可以把它放在一个特殊的目录下(我有我自己的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你可能会发现关于如何使路径更改永久一些解释。

  7. 而且,你可能会在一定的灵活性添加到您的BAT文件,而不必不断input.txtoutput.txt文件名,用%1%2代表你的BAT文件的第一和第二个命令行参数替换它们。

  8. 然后用户可能想要使用文件名中包含空格的文件。他们可能会在名称周围用引号"指定它们。在这种情况下,您需要在FOR命令中添加一些咒语usebackq,以便在用户使用引号时不会造成破坏。

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

那么将所有这些拼在一起,这里是一个简短的BAT文件,让你开始...

@echo off 
    if .%2==. goto help 
    if not exist %1 goto helpno1 
    if exist %2 goto helpalready2 
    FOR /F "usebackq delims=" %%a in (%1) do @echo 127.0.0.1 %%a >>%2 
    goto :eof 
    :help 
    echo you need to specify input and output text files 
    goto :eof 
    :helpno1 
    echo %1 not found 
    goto :eof 
    :helpalready2 
    echo %2 already exist 
    goto :eof 

欢迎BAT编程和享受!

+0

我不明白你说的是什么意思阅读帮助 - 它是什么,我在哪里可以阅读?谢谢。 – Hashim 2012-02-05 21:55:32

+0

打开命令提示符并键入'HELP FOR' – 2012-02-06 08:14:29

+0

按照你所说的,PA,我仍然没有设法让它工作出于某种原因。 :(我是否需要对该代码进行任何编辑?我是否需要更改任何变量名称或类似的东西,或创建文件input.txt/output.txt?请注意,我是一个总新手以批处理文件代码,因此,我从你和下面的海报中得到的所有这些只是简单的复制和粘贴。 – Hashim 2012-02-06 22:23:27

除了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 

批处理文件味:

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 
+0

如果OP需要它在一个批处理文件中,'%a'将需要'%% a' :) – 2012-02-06 16:30:46

+0

Of Course = D我将添加一个批处理文件 – Mechaflash 2012-02-06 16:44:22

在这里,我们走!

(
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 

这将读取文本文件的前四行,然后把你的东西和每一行放回它来自的行。 玩得开心!