V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
imn1
V2EX  ›  Windows

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

  •  
  •   imn1 · 2021-05-11 12:44:56 +08:00 · 3689 次点击
    这是一个创建于 1298 天前的主题,其中的信息可能已经有所发展或是发生改变。
    需求:
    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 可以吗
    xinge666
        2
    xinge666  
       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   ·   实用小工具   ·   1791 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:35 · PVG 00:35 · LAX 08:35 · JFK 11:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.