windows 有没有这种自动移动文件的工具? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
imn1
V2EX    Windows

windows 有没有这种自动移动文件的工具?

  •  
  •   imn1 2021-05-11 12:44:56 +08:00 4182 次点击
    这是一个创建于 1616 天前的主题,其中的信息可能已经有所发展或是发生改变。
    需求:
    0. 移动,不是复制,也就是不是同步的需求
    1. 监视定文件夹(及子文件夹)的特定类型,就是扩展名,然后自动移动到目标文件夹
    2. [重点] 移动后保持子文件夹的路径一致

    例如:
    监视 c:\abc,扩展名*.zip ,目标文件夹 d:\a
    c:\abc\0.zip ---> d:\a\0.zip
    c:\abc\sub\1.zip ---> d:\a\sub\1.zip
    c:\abc\sub\2.zip.part 不移动
    c:\abc\sub\3.rar 不移动
    第 1 条附言    2021-05-11 17:18:27 +08:00
    选择 robocopy,比较简单,居然不知道 robocopy 有监控功能,唉
    robocopy "c:\Shade\xxxx\P\d\bd" "p:\d\bd" *.* /E /MOVE /XJ /MON:1 /XF *.cfg /XF *.downloading /MOT:5

    看命令大概知道吧,shade 沙盒免费版只能固定在 C 盘(尝试过各种指向均告失败),而 C 盘空间不多,要定时把下载完成的东西移走,下载时才用,平时无需挂着监测

    没有比较各个软件优劣,只是选比较符合我的需求,关键是 target 是不定的,一旦变化其他软件可能要重新配置规则,命令行就方便些,只是要挂着个黑窗有点不爽

    谢谢各位
    21 条回复    2021-05-12 11:49:09 +08:00
    hello2060
        1
    hello2060  
       2021-05-11 12:48:06 +08:00 via iPhone   1
    syncthing 可以吗
    TaurusXin
        2
    TaurusXin  
       2021-05-11 12:50:11 +08:00 via iPhone   1
    Python 写个脚本不就行了 用 watchdog 库
    ipwx
        3
    ipwx  
       2021-05-11 12:52:32 +08:00   1
    伪代码:

    while true: {
    mkdir -p D:\a\
    mv C:\abc\*.zip D:\a\
    sleep 10
    }
    also24
        4
    also24  
       2021-05-11 12:52:36 +08:00   2
    goodsync 应该可以配置出相似功能
    ipwx
        5
    ipwx  
       2021-05-11 12:52:54 +08:00
    奥错了还有子目录。那就用 python glob 吧
    venster
        6
    venster  
       2021-05-11 12:54:09 +08:00 via Android   1
    robocooy 的 mon 模式
    vlitter
        7
    vlitter  
       2021-05-11 12:57:39 +08:00 via Android   2
    freefilesync.org ,开源软件,挺好用的
    vlitter
        8
    vlitter  
       2021-05-11 12:58:10 +08:00 via Android
    @vlitter 哦这个好像没有监视的功能。。。。忽略我爸
    Pagliacii
        9
    Pagliacii  
       2021-05-11 12:58:26 +08:00   2
    Tumblr
        10
    Tumblr  
       2021-05-11 13:00:08 +08:00   1
    如果对实时性要求不高: 计划任务 + robocopy
    如果对实时性要求较高: 脚本调用 robocopy
    imn1
        11
    imn1  
    OP
       2021-05-11 14:05:49 +08:00
    @Pagliacii #9
    dropit 用过,但我没找到连同子路径一起复制的规则
    Pagliacii
        12
    Pagliacii  
       2021-05-11 14:19:41 +08:00   1
    konchu
        13
    konchu  
       2021-05-11 15:42:39 +08:00   1
    @vlitter FreeFileSync 有个 Real time sync 监视器,可以设定以秒为单位的监视频率,文件有任何变化即执行命令,可以配合 FreeFileSync 的 Batch file 做到任何事情。
    crab
        14
    crab  
       2021-05-11 16:47:13 +08:00   1
    ReadDirectoryChangesW
    Saurichthys
        15
    Saurichthys  
       2021-05-11 17:38:14 +08:00
    ftpcopy
    vlitter
        16
    vlitter  
       2021-05-11 18:42:26 +08:00 via Android
    @konchu 学到了学到了,谢谢!
    g00001
        17
    g00001  
       2021-05-11 23:32:56 +08:00
    可以自己写一个,下面是我用 aardio 写的:

    import fsys;
    import fsys.dirWatcher;
    import win.ui;
    /*DSG{{*/
    var winform = win.form(text="临视指定文件并移动目录")
    winform.add(
    editChange={cls="edit";left=15;top=17;right=740;bottom=449;db=1;dl=1;dr=1;dt=1;edge=1;hscroll=1;multiline=1;vscroll=1;z=1}
    )
    /*}}*/

    var targetDir = "d:\dst" //目标目录
    var watchDir = "d:\src" //监视的目录
    var watchRule = ".+\.zip" //监视规则

    var watcher = fsys.dirWatcher.thread(
    function(filePath,action,actionText){
    if(action==1/*_FILE_ACTION_ADDED*/
    || action = 5/*_FILE_ACTION_RENAMED_NEW_NAME*/){
    var fileName = io.splitpath(filePath).file
    if(fileName ? string.match(fileName,watchRule)){
    var path = io.joinpath(watchDir,filePath);
    fsys.move(path,io.joinpath(targetDir,filePath));
    winform.editChange.print("已移动",filePath);
    }
    }
    }, watchDir);


    //退出停止监视文件
    winform.OnDestroy= function(){
    if(watcher) watcher.close();
    }

    winform.show()
    win.loopMessage();
    g00001
        18
    g00001  
       2021-05-11 23:35:15 +08:00
    kylejustknows
        19
    kylejustknows  
       2021-05-12 02:16:46 +08:00
    都不用第三方工具
    xcopy ....folder\*.zip ..to_folder\ /S /Y
    S 开关是子文件夹和复制时保持目录结构

    如果你想删除原文件,DEL /Q /F /S .....\*.zip 呗, 然后加一个延时和 goto 永久循环
    0747916
        20
    0747916  
       2021-05-12 08:39:38 +08:00
    @vlitter #7 一直用这个
    g00001
        21
    g00001  
       2021-05-12 11:49:09 +08:00
    xcopy,robocopy 的响应速度都慢,会创建不必要的临时目录,大点的目录就无法忍受了。用文件监控的目的是可以实时响应,速度快占用资源小,而且可以隐藏窗口后台运行。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1292 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 17:14 PVG 01:14 LAX 10:14 JFK 13:14
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86