如果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"
)