代码之家  ›  专栏  ›  技术社区  ›  Chris Thompson

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

  •  0
  • Chris Thompson  · 技术社区  · 15 年前

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

    文本文件如下所示:

    PRXI0000466
    PRXI0000564
    PRXI0000636
    PRXI0000681
    PRXI0001092
    

    所以我想循环通过每一行,然后做一个“ echo . > %file%.txt “(假设) %file% 包含文本文件中的行)。

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

    3 回复  |  直到 15 年前
        1
  •  5
  •   Joey    15 年前

    嗯,这是命令中的一行:

    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
  •  5
  •   Gareth Simpson    15 年前

    您只是想创建空文本文件吗?如果是这样,则此.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
  •  0
  •   Secko    15 年前

    文本文件t.txt包含:

    PRXI0000466
    PRXI0000564
    PRXI0000636
    PRXI0000681
    PRXI0001092
    

    这个循环应该可以解决您的问题。

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