【问题标题】:Appending a txt file from multiple CSVs in subdirectories在子目录中附加来自多个 CSV 的 txt 文件
【发布时间】:2010-12-06 10:57:21
【问题描述】:

我正在尝试编写一个批处理文件,它将直接子目录中的所有 *.csv 文件附加到当前目录中的单个文本文件中。

从各种来源,我设法将这段代码拼凑在一起,该代码适用于当前目录中的文件,但不适用于子目录

for %%a in (*.csv) do (type %%a >> csvreport.txt)

如果有人可以帮助我解决这个问题,我将非常感激,因为我尝试了各种使用通配符的方法,但都没有成功。

【问题讨论】:

    标签: append wildcard batch-processing subdirectory


    【解决方案1】:

    还有一个选择……

    for /f usebackq %%a in (`dir /s /b *.csv`) do (type %%a >> csvreport.txt)
    

    编辑:更多地阅读您的详细信息......您只需要直接目录,您可以这样做:

    for /f usebackq %%a in (`dir /b /ad`) do for %%b in ("%%a"\*.csv) do (type "%%b" >> csvreport.txt)
    

    【讨论】:

    • 非常感谢!我将此批处理文件嵌套在 VB 脚本中,因此所有这些都非常有用。欢呼
    • 我按照%%a 的建议尝试了该命令,但出现错误。事实证明,在 Windows 7 中,您不使用变量作为 %%a,它需要以单个 % 为前缀(所以 %a)。
    • 当命令在.bat文件中时,实际上需要双百分号。如果你只是在命令提示符下运行它,那么你只需要一个百分号。
    【解决方案2】:
    for /R .\ %%a in (*.csv) do (type %%a >> csvreport.txt)
    

    /R表示递归,后面的参数是要启动的文件夹(.\是当前目录)。

    如果您运行for /?,您可以找到更多信息

    【讨论】:

      【解决方案3】:
      dir /ad /b > dirs.txt
      for /f "tokens=1*" %%i in (dirs.txt) do cd %%i & for %%b in (*.csv) do (type %%b >> c:\csvreport.txt) & cd ..
      

      使用 /R 标志将遍历所有子目录树。您可以嵌套“for”语句,使其仅适用于直接子目录,而不适用于它们的子目录。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-23
        • 1970-01-01
        • 1970-01-01
        • 2017-02-11
        • 2019-09-19
        • 1970-01-01
        相关资源
        最近更新 更多