1

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

所以这...

somelink.com 

变成了这个……

127.0.0.1     somelink.com 

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

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

感谢您提前为此提供的任何和所有帮助,非常感谢。

4

3 回答 3

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. input.txt是包含您的域名列表的文本文件,它必须位于当前目录中

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

  4. 如果要创建 BAT 文件,则需要移动 FOR 命令并稍作编辑,将%a循环变量名称更改为%%a.

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

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

  7. 或者你甚至可以将它放在一个特殊的目录中(我有我自己的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 永久更改的解释。

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

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

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

因此,将所有这些部分放在一起,这是一个简短的 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编程并享受!

于 2012-02-05T21:27:59.927 回答
3

开始了!

(
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

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

于 2012-12-13T22:15:10.547 回答
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

批处理文件风格:

  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
于 2012-02-06T16:15:02.093 回答