如果txt文件超过某个大小限制,则将其从一个文件夹移动到另一个文件夹



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

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

我找到的代码:

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

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

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

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

FOR /F "delims=" %%a IN (input.txt) DO if %%~za gtr 1048576 MOVE "%%a" "%destfolder%%%~nxa"

你应该问道。 %%~za 返回 %%a 的长度。 MOVE移动文件,而COPY复制文件,因此您只需在每次执行时执行COPY即可。

@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"
 )

相关内容

最新更新