找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24312|回复: 13

[文件操作] [已解决]批处理调用电脑解压软件 winrar、7-zip...怎么自动判断呢?

[复制链接]
发表于 2023-1-23 14:49:21 | 显示全部楼层 |阅读模式
本帖最后由 ximenhao 于 2023-2-20 10:45 编辑

解压软件有好多款,不同的人,电脑安装的不同解压软件。
有的朋友是winrar 有的是7-zip 有的是360压缩....

另外,不同的朋友 压缩软件安装路径也不同,例如我的winrar安装在:"C:\Program Files (x86)\WinRAR\WinRAR.exe"





现在有什么办法修改下面代码,变成更智能的,可以自动判断电脑有什么压缩软件,安装在哪个文件夹,然后调用来进行解压?

祝大家新年快乐,求有空的朋友指教下哈,灰常感谢!!!
  1. @echo off
  2. rem 设置新文件夹路径
  3. set folderPath=新文件夹

  4. rem 判断新文件夹是否存在,不存在则创建
  5. if not exist %folderPath% md %folderPath%

  6. rem 设置压缩包路径
  7. set zipPath=文件夹\*.rar

  8. rem 解压压缩包
  9. "C:\Program Files (x86)\WinRAR\WinRAR.exe" x %zipPath% %folderPath%

  10. rem 删除压缩包
  11. del %zipPath%

  12. echo 解压完成
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2023-1-23 15:40:38 | 显示全部楼层
我只有思路,因为我也是批处理新手,抱歉啦,希望能给下面的大佬们提供帮助
先用reg命令检查Windows安装程序的注册,寻找主流压缩软件的关键词,并找到其指向的卸载程序,转向其所在目录并再寻找主程序,然后将位置存入变量并在下面指向压缩软件时调用变量
发表于 2023-1-23 16:34:12 | 显示全部楼层
你可以参考这个帖子  批处理全盘搜索指定文件获取其完整路径

根据 压缩软件可执行文件的名称  获取它的路径,然后根据各个压缩软件的命令行用法分别写一下就行了
发表于 2023-1-24 09:26:53 | 显示全部楼层
回复 3# 77七


    这要是我在F盘装了WinRAR,从C盘开始搜要等到猴年马月……而且还要同时搜7-Zip、WinRAR、360Zip,那性能耗用太大。
发表于 2023-1-24 09:27:46 | 显示全部楼层
推荐楼主还是在开头弄个set /p让用户自行选择软件并执行相应命令吧,自动寻找位置还是太麻烦了。
 楼主| 发表于 2023-1-24 13:39:13 | 显示全部楼层
回复 3# 77七

来了,感谢。我研究下 哈哈
 楼主| 发表于 2023-1-24 13:39:32 | 显示全部楼层
回复 5# 谐夜落风


   
嗯,我也研究下
 楼主| 发表于 2023-1-24 13:39:47 | 显示全部楼层
回复 2# 谐夜落风


    注册表是个思路 哈哈
发表于 2023-1-24 14:17:10 | 显示全部楼层
回复 4# 谐夜落风

鱼和熊掌不可兼得

装在F盘,应该属于特殊情况,我估计多数人都会默认装在c盘,
我试了一下,找到我装在c盘下的winrar.exe只消耗了3秒,大部分人能在几秒内找到路径就行了。
而且我看for 语句教学,for /r 对内存占用应该不大
发表于 2023-1-24 18:54:57 | 显示全部楼层
回复 9# 77七


    那也不错,不过搜索得快可能是因为Program Files在Windows、Users这几个“大户”前面儿,毕竟这俩文件夹里的东西又碎又杂,不如指定只搜索各盘符的Program Files文件夹,应该会更快。
发表于 2023-1-24 19:04:35 | 显示全部楼层
回复 1# ximenhao
可以考虑内置一套解压缩软件
发表于 2023-1-25 16:09:36 | 显示全部楼层
回复 1# ximenhao
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1,2 delims=:" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe" /v Path 2^>nul ^| findstr ":"') do (
  4.     set "RarPathL=%%a"
  5.     set "RarPathR=%%b"
  6.     set "MyRar=!RarPathL:~-1!:!RarPathR!\rar.exe"
  7.     echo,!MyRar!
  8. )
  9. for /f "tokens=1,2 delims=:" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\7zFM.exe" /v Path 2^>nul ^| findstr ":"') do (
  10.     set "ZipPathL=%%a"
  11.     set "ZipPathR=%%b"
  12.     set "MyZip=!ZipPathL:~-1!:!ZipPathR:~0,-1!\7z.exe"
  13.     echo,!MyZip!
  14. )
  15. pause
复制代码
发表于 2023-2-21 10:10:40 | 显示全部楼层
有一种思路是不是能通过注册表查找.rar的默认打开程序,然后调用程序来打开。电脑里面默认打开程序在注册表HKEY_CLASSES_ROOT中
  1. for /f "tokens=3" %%a in ('reg query "HKEY_CLASSES_ROOT\.rar"') do echo %%a
复制代码
发表于 2023-2-23 21:36:46 | 显示全部楼层
问题是 电脑有自带的解压软件啊?
demon.tw
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 04:01 , Processed in 0.015166 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表