【问题标题】:To move a txt file from one folder to another if it crosses a certain size limit .如果超过一定的大小限制,将 txt 文件从一个文件夹移动到另一个文件夹。
【发布时间】:2013-08-21 07:42:44
【问题描述】:

如果 txt 文件超过一定的大小限制,例如 1MB,如何将其从一个文件夹移动到另一个文件夹。我想要一个批处理文件,以便我可以每天安排它,因为我一次处理大量文件。

我在这个论坛中找到了某些代码,但我需要一些帮助来添加我提到的条件。 有什么帮助吗?

我找到的代码:

 @echo off
  set src_folder=c:\whatever\
  set dst_folder=c:\foo
  FOR /F "delims=" %%a IN (input.txt) DO COPY "%%a" "%destfolder%\%%~nxa"

【问题讨论】:

    标签: batch-file copy


    【解决方案1】:

    如果数据确实有价值,则使用robocopy 而不是复制或移动(在本地磁盘上移动可能更快)。 robocopy 所做的其中一件事是它确保在复制成功之前不会发生删除,它对网络磁盘问题也非常弹性。 Robocopy 还有很多额外的功能,例如定期检查文件夹的更改,确保时间戳不会更改,根据年龄进行选择等...其中一个功能是仅根据大小进行复制您的文件(/min 甚至 /max 如果您愿意)。 这正是 robocopy 想要处理的场景。

    @echo off
    set src_folder=c:\whatever\
    set dst_folder=c:\foo
    robocopy src_folder dst_folder /mov /min:1048576
    

    /mov 标志在完成后移动文件(或在复制文件后实际删除它,如果您愿意,可能会验证复制错误)。 Robocopy 还知道如何使用 /move 标志处理整个文件夹。

    【讨论】:

    • 嘿,我需要再添加一个条件。我需要在 txt 文件中找到一个特定的字符串说“错误”。如果 txt 文件包含它,那么它应该被移动到一个特定的文件夹
    【解决方案2】:
    FOR /F "delims=" %%a IN (input.txt) DO if %%~za gtr 1048576 MOVE "%%a" "%destfolder%\%%~nxa"
    

    你应该问。 %%~za 返回 %%a 的长度。 MOVE 移动文件,而 COPY 复制它,因此您只需在每个邀请上执行 COPY

    【讨论】:

      【解决方案3】:
      @echo off
        set src_folder=c:\whatever\
        set dst_folder=c:\foo
        set /a max_size_in_mb=1
        set /a max_size=%max_size_in_mb%*1048576 
        FOR /F "delims=" %%a IN (input.txt) DO (
           echo size is %%~za bytes 
           rem this is in 1mb case
           if %%~za GEQ %max_size% move /Y "%%a" "%destfolder%\%%~nxa"
       )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-30
        相关资源
        最近更新 更多