如何首先按日期对文件夹中的文件进行排序,然后将其内容串联到一个新文件中?

SRel

我有一个包含四到五个文本文件的文件夹。

我的总体目标是:创建一个大文件,该文件具有单独文件的内容,但顺序正确。

我可以使用每个文件的时间戳,从最早的文件开始直到最小的文件。

我的流程现在看起来像这样:

  1. 按日期排序此文件夹中的文件。
  2. 创建一个临时文件,并将内容从单独的文件写入此文件。
  3. 输出临时文件。

在代码中,我这样做:

set temp_concat=%temp_dir%\temp_concat.log
echo %temp_concat%
echo aiu_logs   > %temp_concat%
for /f "delims=" %%? in ('dir /b /o:d %Folder%*') do (
    for /f "delims=" %%K in (%Folder%%%?) do (
        echo  %%K   >>%temp_concat%
    )
)

上面的代码似乎可以正常工作,因为我的代码temp_concat很大。

但是,这花费的时间比预期的要长得多。我只需要等待大约40秒就可以合并三个文件。

有没有更好的方法来合并一定数量的文件,但是要按日期正确排列它们?

莫菲

此批处理文件使用Sqashman发布的建议来使用FOR循环为命令COPY创建参数字符串,该命令COPY用于将文件内容按最早的修改的文件和最新的修改的文件最后的顺序连接到单个文件中。

@echo off
setlocal EnableExtensions EnableDelayedExpansion

set "Folder=%~dp0"
if not "%~1" == "" set "Folder=%~1"
set "Folder=%Folder:/=\%"
if not "%Folder:~-1%" == "\" set "Folder=%Folder%\"

set "ResultsFile=%Folder%Results.log"
del "%ResultsFile%" 2>nul
set "Arguments="

for /F "eol=| delims=" %%I in ('dir /A-D-H /B /O:D "%Folder%*" 2^>nul') do if not "%%~fI" == "%~f0" set "Arguments=!Arguments! + "%%I""

if defined Arguments (
    echo aiu_logs>"%ResultsFile%"
    copy /B "%ResultsFile%"%Arguments% "%ResultsFile%" >nul
)

endlocal

如果文件夹路径或文件名之一包含一个或多个感叹号,则!由于启用了延迟的环境变量扩展,因此按批处理文件不起作用

此外,命令行的长度受到限制,因此该批处理文件不适用于太多文件,必须根据每个文件的文件路径的长度和文件名的长度进行串联。

更好的解决方案是使用以下批处理文件:

@echo off
setlocal EnableExtensions DisableDelayedExpansion

set "Folder=%~dp0"
if not "%~1" == "" set "Folder=%~1"
set "Folder=%Folder:/=\%"

pushd "%Folder%" 2>nul
if errorlevel 1 goto EndBatch

set "ResultsFile=Results.log"
del "%ResultsFile%" 2>nul
set "Arguments="

for /F "eol=| delims=" %%I in ('dir /A-D-H /B /O:D * 2^>nul') do if not "%%~fI" == "%~f0" call set "Arguments=%%Arguments%% + "%%I""

if defined Arguments (
    echo aiu_logs>"%ResultsFile%"
    copy /B "%ResultsFile%"%Arguments% "%ResultsFile%" >nul
)

popd
:EndBatch
endlocal

具有一个或多个感叹号的文件夹路径不再是问题。此外,!由于此批处理文件未使用延迟扩展,因此文件名可能包含在内,这比第一个批处理文件慢一点。

该批处理文件将包含要连接文件的文件夹作为当前目录。因此,与第一个批处理文件相比,可以在COPY命令行上将更多文件名指定为自变量,因为指定的文件名没有路径。但是,可以与该批处理文件合并的文件内容的数量仍然受Windows命令行的最大长度或环境变量值的最大长度限制。

为了了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。

  • call /?
  • copy /?
  • dir /?
  • echo /?
  • endlocal /?
  • for /?
  • goto /?
  • if /?
  • popd /?
  • pushd /?
  • set /?
  • setlocal /?

另请参阅有关使用命令重定向运算符的Microsoft文章,获取有关>的说明2>nulWindows命令解释器在执行命令FOR之前,Windows命令解释器处理此命令行时,>必须^FOR命令行使用脱字符号将重定向运算符转义为原义字符,该命令在以DIR命令在后台启动的单独命令进程中执行嵌入式命令行两者之间的连线作为进一步的论点。dir%ComSpec% /c'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按日期对文件进行排序,然后互相复制到新文件夹

来自分类Dev

如何按主题编号(文件名的前缀)对文件进行排序并从中创建一个新文件夹?

来自分类Dev

创建一个新文件夹,然后在该文件夹中插入文件。Google云端硬碟

来自分类Dev

如何在一个新文件中串联两个文件并在一行中对输出进行排序

来自分类Dev

将文件内容和自定义文本输出串联到一个新文件中

来自分类Dev

我有一个文件列表,如何使用bash打开每个文件的内容并将其复制到一个新文件中?

来自分类Dev

如何创建一个新文件夹?

来自分类Dev

如何制作一个指向“特定文件夹中的最新文件”的 .desktop 文件?

来自分类Dev

将文件从一个文件夹复制到另一个文件夹,并使用旧文件名和时间戳将文件重命名到新文件夹中

来自分类Dev

循环执行excel文件,然后将其保存到新文件夹python pandas中

来自分类Dev

循环执行excel文件,然后将其保存到新文件夹python pandas中

来自分类Dev

在文件中搜索模式,然后将其一个接一个地移到新文件中

来自分类Dev

当 Firebase 存储中有一个名为相同的现有文件夹时,如何在 Firebase 中创建一个新文件夹

来自分类Dev

重命名上一个文件夹中的datetime后如何将文件移动到新文件夹

来自分类Dev

重命名前一个文件夹中的datetime后如何将文件移动到新文件夹

来自分类Dev

如何将所有文件(文件夹中每个子文件夹中的最新文件除外)压缩到每个子文件夹一个ZIP文件中?

来自分类Dev

在Nautilus中创建一个新文件夹

来自分类Dev

我有一个 .dd 文件存储在 zip 文件夹中,如何查看其内容?

来自分类Dev

比较一个文件夹中的文件数以检查是否有新文件

来自分类Dev

如何在 Bonita Web 服务器中创建一个新文件夹?

来自分类Dev

如何获取文件夹中的最新文件?

来自分类Dev

如何获取文件夹中的最新文件?

来自分类Dev

如何在Android中按文件名或日期对文件或文件夹进行升序或降序排序?

来自分类Dev

对文件夹中的文件进行排序

来自分类Dev

重命名文件夹中的文件,然后将其移动到另一个文件夹

来自分类Dev

如何将文件夹中的每个第4个文件复制到新文件夹中?

来自分类Dev

如何按子文件夹名称然后按名称对文件夹中的所有文件进行排序?

来自分类Dev

如何在FTP文件夹的Dolphin 15.12.3中按“修改日期”对文件进行排序

来自分类Dev

如何使用 BASH 中的一个命令同时移动文件和创建目录并粘贴到该新文件夹中

Related 相关文章

  1. 1

    按日期对文件进行排序,然后互相复制到新文件夹

  2. 2

    如何按主题编号(文件名的前缀)对文件进行排序并从中创建一个新文件夹?

  3. 3

    创建一个新文件夹,然后在该文件夹中插入文件。Google云端硬碟

  4. 4

    如何在一个新文件中串联两个文件并在一行中对输出进行排序

  5. 5

    将文件内容和自定义文本输出串联到一个新文件中

  6. 6

    我有一个文件列表,如何使用bash打开每个文件的内容并将其复制到一个新文件中?

  7. 7

    如何创建一个新文件夹?

  8. 8

    如何制作一个指向“特定文件夹中的最新文件”的 .desktop 文件?

  9. 9

    将文件从一个文件夹复制到另一个文件夹,并使用旧文件名和时间戳将文件重命名到新文件夹中

  10. 10

    循环执行excel文件,然后将其保存到新文件夹python pandas中

  11. 11

    循环执行excel文件,然后将其保存到新文件夹python pandas中

  12. 12

    在文件中搜索模式,然后将其一个接一个地移到新文件中

  13. 13

    当 Firebase 存储中有一个名为相同的现有文件夹时,如何在 Firebase 中创建一个新文件夹

  14. 14

    重命名上一个文件夹中的datetime后如何将文件移动到新文件夹

  15. 15

    重命名前一个文件夹中的datetime后如何将文件移动到新文件夹

  16. 16

    如何将所有文件(文件夹中每个子文件夹中的最新文件除外)压缩到每个子文件夹一个ZIP文件中?

  17. 17

    在Nautilus中创建一个新文件夹

  18. 18

    我有一个 .dd 文件存储在 zip 文件夹中,如何查看其内容?

  19. 19

    比较一个文件夹中的文件数以检查是否有新文件

  20. 20

    如何在 Bonita Web 服务器中创建一个新文件夹?

  21. 21

    如何获取文件夹中的最新文件?

  22. 22

    如何获取文件夹中的最新文件?

  23. 23

    如何在Android中按文件名或日期对文件或文件夹进行升序或降序排序?

  24. 24

    对文件夹中的文件进行排序

  25. 25

    重命名文件夹中的文件,然后将其移动到另一个文件夹

  26. 26

    如何将文件夹中的每个第4个文件复制到新文件夹中?

  27. 27

    如何按子文件夹名称然后按名称对文件夹中的所有文件进行排序?

  28. 28

    如何在FTP文件夹的Dolphin 15.12.3中按“修改日期”对文件进行排序

  29. 29

    如何使用 BASH 中的一个命令同时移动文件和创建目录并粘贴到该新文件夹中

热门标签

归档