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

想通过 winrar 定期压缩一些文件,有没有除了自己 win7 自带的计划程序外的方法呢?

  •  
  •   sjmcefc2 · 2022-10-01 10:04:40 +08:00 · 3208 次点击
    这是一个创建于 784 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求:在 win7 上定期压缩文件 困难:搜索了一些材料,发现我的 win7 上都没有计划任务这个文件夹,只有计划程序,通过计划程序来调用 winrar 的快捷方式,总是无法成功。 求助:有没有 win7 上可以用的非系统自带的计划程序?可以完成我的这个备份的需求呢?

    31 条回复    2022-10-03 19:14:27 +08:00
    eason1874
        1
    eason1874  
       2022-10-01 10:40:19 +08:00
    别调用快捷方式,直接填程序路径,后面跟参数。如果你不知道程序安装在哪里,你就选择它的快捷方式在右键菜单点“属性”,在选项卡切换到“快捷方式”,目标那栏就是程序路径

    另外说一句,7zip 比 winrar 好用吧,开源免费无广告,命令行也简单好用
    PrinceofInj
        2
    PrinceofInj  
       2022-10-01 10:47:41 +08:00
    可能只是管理里面看不到了。试试 schtask
    XavierOops
        3
    XavierOops  
       2022-10-01 10:50:00 +08:00
    python ,以前拿 python 定时压缩备份过我的世界地图存档
    steins2628
        4
    steins2628  
       2022-10-01 10:55:38 +08:00
    https://github.com/Hellager/MissionBackup/tree/pyqt
    可以看看我以前写的这个,基于 pyqt ,下下来就能用
    最近在用 tauri 重写,不过预计就不支持 win7 了
    ch2
        5
    ch2  
       2022-10-01 11:05:28 +08:00
    不要用快捷方式,用完整路径
    sjmcefc2
        6
    sjmcefc2  
    OP
       2022-10-01 11:46:56 +08:00
    7zip
    @PrinceofInj 这个 schtask 搜不到。

    @eason1874 这个有什么参考的资料吗?比如命令都怎么写? windows 7 下面

    @XavierOops 需要备份的文件在 smb 共享盘上


    @steins2628 这个看起来很好啊,
    Tumblr
        7
    Tumblr  
       2022-10-01 11:59:13 +08:00
    @PrinceofInj #2 不是 shdtask ,是 taskschd.msc ,那个工具叫 Task Scheduler 。
    sjmcefc2
        8
    sjmcefc2  
    OP
       2022-10-01 12:03:31 +08:00
    @Tumblr 这工具有的,就是有一个叫做计划任务的文件夹找不到。有一篇攻略说 winrar 要想实现定期压缩,就要 1.用 winrar 做一个快捷方式,2 不能添加计划任务,二是直接添加到计划任务文件夹
    p1956
        9
    p1956  
       2022-10-01 12:15:43 +08:00
    装 WSL ,用 linux 系统呢?
    0TSH60F7J2rVkg8t
        10
    0TSH60F7J2rVkg8t  
       2022-10-01 12:15:49 +08:00
    @sjmcefc2 计划任务直接填运行程序的完整路径,配好参数就可以,啥都能运行,和快捷方式毫无关系,我不知道哪个教程说的居然要快捷方式。

    一个例子:

    新建一个普通计划任务,触发条件你自己选,然后到运行程序部分,程序写:

    c:\myrar\unrar.exe

    参数写:
    x c:\yourfile.rar *.gif c:\extractfolder\

    如果参数里,包含空格,需要用双引号括起来,比如解压目标是 extract folder ,就是这样:

    x c:\yourfile.rar *.gif "c:\extract folder\"

    你按需运行下试试
    sjmcefc2
        11
    sjmcefc2  
    OP
       2022-10-01 12:21:13 +08:00
    @ahhui 还真有个教程这样说的,就是关键字“winrar windows 计划任务 ”
    Tumblr
        12
    Tumblr  
       2022-10-01 12:45:47 +08:00
    @sjmcefc2 #8 有这篇攻略的链接么?据我所知,在 Windows 下只有一个叫 Startup 的文件夹是提供开机启动的,并没有什么“计划任务”的文件夹可以提供定时任务。
    在 Windows 里定时执行任务,一般有两种方式:
    1. 通过自带的计划任务。
    2. 启动一个常驻的进程,然后通过这个进程定时执行任务。
    除以上,并没有第三种可以提供定时任务的方法。

    另外题外话,我觉得是时候升级 Windows 11 了,如果硬件支持不了最起码 Windows 10 也是好的,现在的一些工具对 Windows 7 的支持太不友好了。
    sjmcefc2
        13
    sjmcefc2  
    OP
       2022-10-01 13:09:21 +08:00
    @Tumblr url 贴不上,现在很多还是 win7 ,没办法升级
    PrinceofInj
        14
    PrinceofInj  
       2022-10-01 13:21:27 +08:00
    @sjmcefc2 记错了,应该是 schtasks
    sjmcefc2
        16
    sjmcefc2  
    OP
       2022-10-01 13:38:00 +08:00
    @PrinceofInj 太感谢了
    clorischan
        17
    clorischan  
       2022-10-01 13:59:16 +08:00
    然后提醒一下
    如果备份的磁盘是从 SMB 映射的磁盘
    则创建磁盘的系统用户要求处于已登录状态
    并且用于备份的进程(不管是用任务计划还是别的什么启动的 WinRAR / 7z ...)
    也需要以相同的用户以交互模式运行

    如果不是同用户, 或者同用户启动但是以非交互模式运行, 都是无法访问映射的磁盘的.
    sjmcefc2
        18
    sjmcefc2  
    OP
       2022-10-01 15:00:23 +08:00
    @clorischan 就是已经映射了也不行吗?
    比如 smb 的硬盘,已经映射到本地 z 盘?
    Tumblr
        19
    Tumblr  
       2022-10-01 15:23:20 +08:00
    @PrinceofInj #14 这个命令只是提供计划任务管理的,和通过管理器打开的操作没太多差别,这属于是把简单问题复杂化了。

    @ahhui #10 是的,很多执行失败的计划任务是执行账户和当前账户的环境变量不同,导致一些相对路径的命令找不到。用绝对路径向来是一个比较稳妥的方法。
    yjd
        20
    yjd  
       2022-10-01 15:31:22 +08:00
    win7 自带任务计划+WinRAR 就可以实现你目的。
    如果参数命令太多,写到一个批处理。计划任务调用即可。
    真搞不懂一堆本末倒置的方案咋想的
    计划任务列表有个 bug ,手动测试时,你看他一在卡着,实际是执行成功,需要手动刷新下。
    systemcall
        21
    systemcall  
       2022-10-01 15:41:54 +08:00
    建议写一个批处理,全部用绝对路径,计划任务里面添加这个批处理
    计划任务的触发器是可以调的,你先配置好 Windows 的自动登录,再把那个任务的触发器调成在用户登录后执行,使用的用户调成你那个用户,就行了
    触发器加点延时,因为 smb 映射磁盘要点时间
    clorischan
        22
    clorischan  
       2022-10-01 15:44:20 +08:00
    @sjmcefc2

    就是映射了才不行, 映射磁盘只对当前用户下以交互模式运行的程序有效

    例如:

    系统用户为: admin
    然后从 SMB \\storage_server\share 映射一个盘符到本地 Z:\
    使用任务计划调用 7z

    那么在使用任务计划的的情况下
    运行任务时,请使用下列用户帐户: admin (与创建映射磁盘的用户必须相同)
    只在用户登录时运行: √ (只有选择此项才是以交互模式运行,选择不管用户是否登录都要运行为非交互模式)
    --- 以上 2 条都满足才能访问直接映射磁盘 Z:\ 否则只能使用 \\storage_server\share 这样的远程路径访问(需要有凭据
    然后操作为启用程序 : 调用 7z 执行相关操作
    yjd
        23
    yjd  
       2022-10-01 16:41:21 +08:00
    网络 smb 根本不是啥事。
    windows 可以记忆网络访问凭据。更省事直接写在批处理里用 net use \\xxx\ipc$ 连接下。
    再者 winrar.exe 执行命令行根本就没显示 UI 不需要去想那个交互模式设定,再不济还有 Rar.exe 纯命令行。
    1 ,访问 smb 的路径,需要 smb 服务器账号有浏览和读取权限就行
    2 ,本地调用 winrar 打包,存储压缩包的目录有写权限就行。本地账号和 smb 账号是两回事,不要理解错。
    3 ,计划任务本身执行权限就可以设置为 system 级,直接选最高权限即可。因为如果你选账号还得填密码 233
    crab
        24
    crab  
       2022-10-01 16:58:22 +08:00
    试下写 bat 里面,间接调用的方式.
    sjmcefc2
        25
    sjmcefc2  
    OP
       2022-10-01 17:17:00 +08:00
    反馈一下,7z 的 bat 命令+windows 计划任务完美解决。
    其他的 UI 工具确实挺好,但是有些机器上会出现 dll 缺失的问题,这种基本无解,因为感觉即使是一个安装盘装的系统,dll 好像也不太相同。
    sjmcefc2
        26
    sjmcefc2  
    OP
       2022-10-01 17:17:29 +08:00
    系统自带的工具比其他的好很多,没有什么其他的需要安装的依赖问题。
    kemistep
        27
    kemistep  
       2022-10-01 18:51:21 +08:00
    提供参考:
    [zip 压缩备份文件并 ignore 部分文件 - ministep]( https://bigdata.ministep.cn/423/)

    windows 使用 7zip 备份文件夹并 ignore 部分文件

    定时执行,就放到 windows 的任务调度程序中,手动设置下即可;
    kemistep
        28
    kemistep  
       2022-10-01 18:52:36 +08:00
    附上命令行:

    cmd 执行
    ## 备份 python 文件夹
    "C:\Program Files\7-Zip\7z.exe" a G:\backups\windows_localhost\backup_python_v101.zip D:\code\python -xr!*\venv\* -xr!*\.git\* -xr!*\.ipynb_checkpoints\* -xr!*\__pycache__\* -xr!*\history\* -xr!*\histroy\* -xr!*\tmp\* -xr!*.log -xr!*.mp3 -xr!*.mp4 -xr!*.sqlite3 -xr!*.ipynb -xr!*.ttf


    -xr 为忽略部分文件夹或者文件

    这是 cmd 命令,可以写成一个 bat 脚本即可;
    sjmcefc2
        29
    sjmcefc2  
    OP
       2022-10-02 09:50:43 +08:00
    发现有一个问题,就是现在没有计算备份的进度,有可能 10 个 zip 一起备份,就会很慢。
    如果想根据备份对象的大小来计算启动备份的时间,这个有没有比较经典的做法呢?
    现在能想到的就是文件大小 /拷贝速度 计算出一个 zip 需要的时间,然后依次类推,感觉做法很傻啊
    flynaj
        30
    flynaj  
       2022-10-03 01:33:04 +08:00 via Android
    命令行是 rar.exe 不要快捷方式,要完整路径 参数。
    并行满,你全部写到一个批处理里面,顺序备份。
    byzod
        31
    byzod  
       2022-10-03 19:14:27 +08:00
    @sjmcefc2

    start "" rar.exe zip1
    start "" rar.exe zip2

    是并行

    rar.exe zip1
    rar.exe zip2

    是串行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2576 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:42 · PVG 18:42 · LAX 02:42 · JFK 05:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.