如果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"
答案 0 :(得分:0)
FOR /F "delims=" %%a IN (input.txt) DO if %%~za gtr 1048576 MOVE "%%a" "%destfolder%\%%~nxa"
应该按照你的要求做。 %%~za
返回%%a
的长度。 MOVE
移动文件,而COPY
复制文件,因此您只需在每次调用时执行COPY
。
答案 1 :(得分:0)
@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"
)
答案 2 :(得分:0)
如果数据确实有价值,那么使用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 标志处理整个文件夹。