2

如果超过一定的大小限制,例如 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"
4

3 回答 3

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

你应该问。%%~za返回 的长度%%aMOVE在复制文件的同时移动文件COPY,因此您只需COPY在每次邀请时执行。

于 2013-08-21T08:17:27.160 回答
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"
 )
于 2013-08-21T08:17:56.927 回答
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标志处理整个文件夹。

于 2013-08-21T09:42:33.337 回答