在批处理或VBS脚本中逐行读取文本文件?

时间:2009-06-30 19:23:31

标签: vbscript batch-file loops

我有一个文本文件,其中包含我需要创建的文件名列表,减去扩展名。我想运行一个快速批处理文件命令或VBS脚本,它将遍历列表,然后根据名称创建一个文件。

文本文件如下所示:

PRXI0000466
PRXI0000564
PRXI0000636
PRXI0000681
PRXI0001092

所以我想循环遍历每一行,然后执行“echo . > %file%.txt”(假设%file%包含文本文件中的行)。

有人能告诉我一个快速的方法吗?

3 个答案:

答案 0 :(得分:5)

您是否只是想创建空文本文件?如果是这样,这个.vbs脚本就会这样做

Set fso = CreateObject("Scripting.FileSystemObject")
Set listFile = fso.OpenTextFile("list.txt")
do while not listFile.AtEndOfStream 
    fName =  listFile.ReadLine()
    fso.CreateTextFile(fName + ".txt")
loop

答案 1 :(得分:5)

嗯,这是cmd中的单行:

for /f %i in (textfile.txt) do @echo . > %i.txt

for /f通过文本文件逐行循环,并在路上进行标记化。幸运的是,你的行中没有空格,否则就会在那里调用像"delims="这样的东西。

这会使包含点的单行跟在每个新文件中的空格之后。如果您只想要一个空白行,则必须使用echo.>%i.txt。如果您只想创建每个文件(UNIX geeks可能只使用touch(1)),您可以使用copy NUL %i.txt。如果要在批处理文件中使用它(而不是直接从命令行使用),则必须使用%%i而不是%i

我认为你真的想创建空文件,所以以下应该可以解决这个问题:

for /f %i in (textfile.txt) do @copy nul %i.txt

答案 2 :(得分:0)

文本文件t.txt包含:

PRXI0000466
PRXI0000564
PRXI0000636
PRXI0000681
PRXI0001092

这个循环可以解决你的问题。

for /f %%a in (t.txt) do %%a > %%a.txt