使用批处理命令

时间:2015-05-22 08:54:58

标签: windows batch-file

我是批处理命令的新手。但我知道这是我将速度超过10mb的日志文件从特定文件夹移动到另一个目录的最快方式。

我尝试this检查MOVE命令,似乎它没有解释为什么我想为我提取过滤器来提取大小超过10mb的文件:

还有this one link他通过名字过滤来移动文件:(实际上这是正确的但不完全是我要求的)

例如,如下所示,我想将file1.txt移动到目标文件夹,而小于10mb的file2.txt将保留在源文件夹中。

  

源文件夹:

     

file1.txt 10,000kb

     

file2.txt 9,500kb

     

目标文件夹:

     

清空(暂无文件)

--------- ---------结果

  

源文件夹:

     

file2.txt 9,500kb

     

目标文件夹:

     

file1.txt 10,000kb

如果有人能帮助我,那就太棒了!

1 个答案:

答案 0 :(得分:1)

@echo off
    setlocal enableextensions disabledelayedexpansion

    set "sourceFolder=%cd%"
    set "targetFolder=%cd%\target"
    set "minSize=10485760"

    for /f "tokens=*" %%a in ('
        robocopy "%sourceFolder%" "%sourceFolder%" /l /is /nocopy /njh /njs /nc /ns /ndl /min:%minsize%
    ') do echo move /y "%%~fa" "%targetFolder%"

这使用robocopy命令(由于它不会使用移动操作而没有直接用于移动文件,而是首先复制到目标然后删除源)以获取文件列表表示最小尺寸。此列表使用for /f命令处理,并且对于每个文件执行move操作。

move命令仅回显给控制台。如果输出正确,请删除echo命令。