查找大于100MB的文件并移至文件夹

时间:2014-05-28 13:25:52

标签: batch-file

我是批处理文件的全新手。我一直在寻找Batch script to find files greater than 10MB in D drive in windows xp

中的一个可靠来源

我在当前目录中有多个文件夹。我的目的是递归地找到所有100MB或以上的文件。找到结果后,我想将所有这些文件移动到一个新文件夹中。我的所有子文件夹都包含一个电影文件。在linux中我创建了一个这样的脚本:

find /media/CDrive/tobecheck/ -name "*.wmv" -exec mv {} /media/CDrive/temp/ \;
find /media/CDrive/tobecheck/ -name "*.avi" -exec mv {} /media/CDrive/temp/ \;
find /media/CDrive/tobecheck/ -name "*.AVI" -exec mv {} /media/CDrive/temp/ \;
find /media/CDrive/tobecheck/ -name "*.WMV" -exec mv {} /media/CDrive/temp/ \;
find /media/CDrive/tobecheck/ -name "*.MKV" -exec mv {} /media/CDrive/temp/ \;
find /media/CDrive/tobecheck/ -name "*.mkv" -exec mv {} /media/CDrive/temp/ \;
find /media/CDrive/tobecheck/ -name "*.mp4" -exec mv {} /media/CDrive/temp/ \

所有这一行都会移动到tobecheck文件夹中的任何内容,并递归查找电影文件并将其移动到临时文件夹。 我想要达到这样的目的。为了使它更容易,因为我知道我的所有电影文件都高于100MB。所以我试图找到这个解决方案。

如果有人知道如何在Windows命令行中使用管道,它将真正节省我的大部分时间:)

2 个答案:

答案 0 :(得分:2)

这应该将文件超过100 MB移动到递归显示的文件夹,但测试它以查看它如何处理超过2 GB的文件。
您必须计算反向结果,因为批处理数学最高为2GB。

@echo off
for /r %%a in (*.wmv *.avi *.mkv *.mp4) do (
if not %%~za LEQ 100000000 move "%%a" "media\CDrive\temp"
)

答案 1 :(得分:0)

for %i in (*.*) do echo %i|findstr /i ".mov$ .wmv$ .avi$ .mkv$ .mp4$" && move "%i" "\media\CDrive\temp\%i"

如果您在批处理文件中使用它,请写%%i而不是%i

伪代码:

所有文件(*.*)执行:

将文件名(echo %i)和管道(|)写入findstr

查看其中一个扩展程序是否结束($)但不关心大小写(/i

如果是(&&)移动文件