如何按顺序合并文件

时间:2018-12-22 00:40:38

标签: batch-file

我已经找到了Windows批处理脚本,它将结合所有子目录中的csv文件。它在Windows 10中很好用,但是当我在Windows 7中运行脚本时,所有文件都乱了。如何强制组合csv文件的顺序?

df['RUL'] = df.loc[:, ['engine', 'cycle']].groupby('engine').transform('max')
df['RUL'] = df['RUL'] - df['cycle']

4 个答案:

答案 0 :(得分:2)

只需对代码稍作更改即可完成工作:

@echo off
FOR /F "usebackq delims=" %%i IN (`dir /s /b /O:N *.csv`) do (
    if not "%%~nxi" == "output.csv" (
        echo %%~nxi >> output.csv
        echo %%i
        echo %%~nxi
        type "%%i" >> output.csv
        echo. >> output.csv
        echo. >> output.csv
    )
)

重点是使用其他命令-使用 dir 控制排序顺序。
/b用于dir
的干净输出 /O用于订购,N-名称。
检查FOR /?dir /?了解更多详细信息。

PS:您可能想使用:

echo %%~dpnxi >> output.csv

代替第4行的echo %%~nxi >> output.csv,以显示output.csv中每个文件的完整路径。

答案 1 :(得分:1)

这只是对POW's answer的略微修改,可以为您带来更好的性能。此技术使文件保持打开状态以进行写入。当您多次使用追加时,它将打开和关闭输出文件。因此,文件指针每次输出到文件时都必须重置。

@echo off
(FOR /F "usebackq delims=" %%i IN (`dir /s /b /O:N *.csv`) do (
    echo %%~nxi
    echo %%i >con
    type "%%i"
    echo.
    echo.
)
)>output.tmp
rename output.tmp output.csv

答案 2 :(得分:0)

这是另一种可能的解决方案:

@echo off

for /R %%A IN (*.csv) do (
     if not "%%~nxA"=="output.csv" (
           (echo %%~fA && type "%%~fA" && echo. && echo.)>>output.csv
           echo Processed: %%A
           echo %%~nxA
     )
)

使用更少的代码。

  • /R选项与for一起使用来遍历%cd%中的子文件夹。
  • 我们要解析所有csv个文件,因此,我们在括号中用(*.csv)指定它。
    • 然后,我们检查当前正在处理的csv文件是否为output.csv
      • 如果没有,则我们附加csv"%%~fA")文件的完整路径,其内容(type "...")和两个换行符(echo.output.csv。此条件不是真正必需的,但已成为问题的主题。 此外,如果您不想将完整路径附加到output.csv,但是文件名和扩展名仅 ,只需将%%~fA替换为{ {1}}。
      • 之后,我们回显当前处理的文件及其文件名和扩展名。

      • 如果当前正在处理的文件 %%~nxA,则我们重复循环。
  • 现在,output.csv在所有子目录中具有所有 output.csv个文件的内容。

因此,现在打开一个新的cmd并键入以下命令。仔细阅读输出:

  • csv
  • for /?
  • if /?
  • echo /?

一些建议供进一步阅读:

答案 3 :(得分:0)

感谢大家的帮助。阅读所有响应后,我意识到我可以解决Windows排序问题,方法是将其排序到另一个文件,然后从那里读取它。

dir /b /s /O:N *.csv | sort > file.txt
for /f %%A IN (file.txt) do (
if not %%~nxA == output.csv (
echo %%~dpnxA
echo %%~nxA >> output.csv
type %%A >> output.csv
echo. >> output.csv
echo. >> output.csv
)
)

再次感谢您的所有帮助。