批处理文件读取和修改文本文件
好的,基本上,我有一个纯文本记事本文件中的链接的完整列表,每个链接在一个单独的行。我想要做的就是在每个链接前添加一些文本,特别是: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文件
FOR是遍历输入文本文件行的命令。在http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/for.mspx
input.txt
阅读Microsoft文档包含您的域名列表的文本文件,它必须驻留在当前目录output.txt
将结果文件将包含前缀的域名列表用127.0.0.1,它会在当前目录下创建如果你想创建一个BAT文件,你需要移动指挥和编辑它一点点,改变
%a
循环变量名是%%a
。您可以然后将BAT文件无论是在当前目录下,你的输入和居住在输出将被创建。
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你可能会发现关于如何使路径更改永久一些解释。而且,你可能会在一定的灵活性添加到您的BAT文件,而不必不断
input.txt
和output.txt
文件名,用%1
和%2
代表你的BAT文件的第一和第二个命令行参数替换它们。然后用户可能想要使用文件名中包含空格的文件。他们可能会在名称周围用引号
"
指定它们。在这种情况下,您需要在FOR命令中添加一些咒语usebackq
,以便在用户使用引号时不会造成破坏。最后,您需要决定在输出文本文件已经存在的情况下该怎么做,您可能想要考虑防止覆盖。
那么将所有这些拼在一起,这里是一个简短的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编程和享受!
除了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
如果OP需要它在一个批处理文件中,'%a'将需要'%% a' :) – 2012-02-06 16:30:46
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
这将读取文本文件的前四行,然后把你的东西和每一行放回它来自的行。 玩得开心!
我不明白你说的是什么意思阅读帮助 - 它是什么,我在哪里可以阅读?谢谢。 – Hashim 2012-02-05 21:55:32
打开命令提示符并键入'HELP FOR' – 2012-02-06 08:14:29
按照你所说的,PA,我仍然没有设法让它工作出于某种原因。 :(我是否需要对该代码进行任何编辑?我是否需要更改任何变量名称或类似的东西,或创建文件input.txt/output.txt?请注意,我是一个总新手以批处理文件代码,因此,我从你和下面的海报中得到的所有这些只是简单的复制和粘贴。 – Hashim 2012-02-06 22:23:27