【问题标题】:Reading a text file line by line in a batch or VBS script?在批处理或 VBS 脚本中逐行读取文本文件?
【发布时间】:2025-12-10 22:10:01
【问题描述】:
我有一个文本文件,其中包含我需要创建的文件名列表(减去扩展名)。我想运行一个快速批处理文件命令或 VBS 脚本,它将遍历列表,然后根据名称创建一个文件。
文本文件如下所示:
PRXI0000466
PRXI0000564
PRXI0000636
PRXI0000681
PRXI0001092
所以我想遍历每一行,然后执行“echo . > %file%.txt”(假设%file% 包含文本文件中的行)。
谁能告诉我一个快速的方法来做到这一点?
【问题讨论】:
标签:
vbscript
batch-file
loops
【解决方案1】:
嗯,这是 cmd 中的单行代码:
for /f %i in (textfile.txt) do @echo . > %i.txt
for /f 在文本文件中逐行循环,并在途中进行标记化。幸运的是,你的行中没有空格,否则这将需要像 "delims=" 这样的东西。
这将在每个新文件中放置一个包含点的单行,后跟一个空格。如果你只想要一个空行,你必须使用echo.>%i.txt。如果您只想创建每个文件(UNIX 极客可能只使用touch(1)),您可以使用copy NUL %i.txt。如果您想在批处理文件中使用它(而不是直接从命令行),那么您必须使用 %%i 而不是 %i。
我认为你真的想创建空文件,所以下面应该可以解决问题:
for /f %i in (textfile.txt) do @copy nul %i.txt
【解决方案2】:
您只是想创建空文本文件吗?如果是这样,这个 .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
【解决方案3】:
文本文件 t.txt 包含:
PRXI0000466
PRXI0000564
PRXI0000636
PRXI0000681
PRXI0001092
这个循环应该可以解决你的问题。
for /f %%a in (t.txt) do %%a > %%a.txt