[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]批处理调用电脑解压软件 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 解压完成
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

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

TOP

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

根据 压缩软件可执行文件的名称  获取它的路径,然后根据各个压缩软件的命令行用法分别写一下就行了
bat小白,请多指教!谢谢!

TOP

回复 3# 77七


    这要是我在F盘装了WinRAR,从C盘开始搜要等到猴年马月……而且还要同时搜7-Zip、WinRAR、360Zip,那性能耗用太大。
回望过去,展望未来。

TOP

推荐楼主还是在开头弄个set /p让用户自行选择软件并执行相应命令吧,自动寻找位置还是太麻烦了。
回望过去,展望未来。

TOP

回复 3# 77七

来了,感谢。我研究下 哈哈

TOP

回复 5# 谐夜落风


   
嗯,我也研究下

TOP

回复 2# 谐夜落风


    注册表是个思路 哈哈

TOP

回复 4# 谐夜落风

鱼和熊掌不可兼得

装在F盘,应该属于特殊情况,我估计多数人都会默认装在c盘,
我试了一下,找到我装在c盘下的winrar.exe只消耗了3秒,大部分人能在几秒内找到路径就行了。
而且我看for 语句教学,for /r 对内存占用应该不大
bat小白,请多指教!谢谢!

TOP

回复 9# 77七


    那也不错,不过搜索得快可能是因为Program Files在Windows、Users这几个“大户”前面儿,毕竟这俩文件夹里的东西又碎又杂,不如指定只搜索各盘符的Program Files文件夹,应该会更快。
回望过去,展望未来。

TOP

回复 1# ximenhao
可以考虑内置一套解压缩软件

TOP

回复 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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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

TOP

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

TOP

返回列表