Board logo

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

作者: ximenhao    时间: 2023-1-23 14:49     标题: [已解决]批处理调用电脑解压软件 winrar、7-zip...怎么自动判断呢?

本帖最后由 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 解压完成
复制代码

作者: 谐夜落风    时间: 2023-1-23 15:40

我只有思路,因为我也是批处理新手,抱歉啦,希望能给下面的大佬们提供帮助
先用reg命令检查Windows安装程序的注册,寻找主流压缩软件的关键词,并找到其指向的卸载程序,转向其所在目录并再寻找主程序,然后将位置存入变量并在下面指向压缩软件时调用变量
作者: 77七    时间: 2023-1-23 16:34

你可以参考这个帖子  批处理全盘搜索指定文件获取其完整路径

根据 压缩软件可执行文件的名称  获取它的路径,然后根据各个压缩软件的命令行用法分别写一下就行了

作者: 谐夜落风    时间: 2023-1-24 09:26

回复 3# 77七


    这要是我在F盘装了WinRAR,从C盘开始搜要等到猴年马月……而且还要同时搜7-Zip、WinRAR、360Zip,那性能耗用太大。
作者: 谐夜落风    时间: 2023-1-24 09:27

推荐楼主还是在开头弄个set /p让用户自行选择软件并执行相应命令吧,自动寻找位置还是太麻烦了。
作者: ximenhao    时间: 2023-1-24 13:39

回复 3# 77七

来了,感谢。我研究下 哈哈
作者: ximenhao    时间: 2023-1-24 13:39

回复 5# 谐夜落风


   
嗯,我也研究下
作者: ximenhao    时间: 2023-1-24 13:39

回复 2# 谐夜落风


    注册表是个思路 哈哈
作者: 77七    时间: 2023-1-24 14:17

回复 4# 谐夜落风

鱼和熊掌不可兼得

装在F盘,应该属于特殊情况,我估计多数人都会默认装在c盘,
我试了一下,找到我装在c盘下的winrar.exe只消耗了3秒,大部分人能在几秒内找到路径就行了。
而且我看for 语句教学,for /r 对内存占用应该不大
作者: 谐夜落风    时间: 2023-1-24 18:54

回复 9# 77七


    那也不错,不过搜索得快可能是因为Program Files在Windows、Users这几个“大户”前面儿,毕竟这俩文件夹里的东西又碎又杂,不如指定只搜索各盘符的Program Files文件夹,应该会更快。
作者: ANSL(2)    时间: 2023-1-24 19:04

回复 1# ximenhao
可以考虑内置一套解压缩软件
作者: Batcher    时间: 2023-1-25 16:09

回复 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
复制代码

作者: 23618342    时间: 2023-2-21 10:10

有一种思路是不是能通过注册表查找.rar的默认打开程序,然后调用程序来打开。电脑里面默认打开程序在注册表HKEY_CLASSES_ROOT中
  1. for /f "tokens=3" %%a in ('reg query "HKEY_CLASSES_ROOT\.rar"') do echo %%a
复制代码

作者: jyswjjgdwtdtj    时间: 2023-2-23 21:36

问题是 电脑有自带的解压软件啊?
demon.tw




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2