标题: [文件操作] [已解决]批处理调用电脑解压软件 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"
现在有什么办法修改下面代码,变成更智能的,可以自动判断电脑有什么压缩软件,安装在哪个文件夹,然后调用来进行解压?
祝大家新年快乐,求有空的朋友指教下哈,灰常感谢!!!- @echo off
- rem 设置新文件夹路径
- set folderPath=新文件夹
-
- rem 判断新文件夹是否存在,不存在则创建
- if not exist %folderPath% md %folderPath%
-
- rem 设置压缩包路径
- set zipPath=文件夹\*.rar
-
- rem 解压压缩包
- "C:\Program Files (x86)\WinRAR\WinRAR.exe" x %zipPath% %folderPath%
-
- rem 删除压缩包
- del %zipPath%
-
- 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 - @echo off
- setlocal enabledelayedexpansion
- 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 (
- set "RarPathL=%%a"
- set "RarPathR=%%b"
- set "MyRar=!RarPathL:~-1!:!RarPathR!\rar.exe"
- echo,!MyRar!
- )
- 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 (
- set "ZipPathL=%%a"
- set "ZipPathR=%%b"
- set "MyZip=!ZipPathL:~-1!:!ZipPathR:~0,-1!\7z.exe"
- echo,!MyZip!
- )
- pause
复制代码
作者: 23618342 时间: 2023-2-21 10:10
有一种思路是不是能通过注册表查找.rar的默认打开程序,然后调用程序来打开。电脑里面默认打开程序在注册表HKEY_CLASSES_ROOT中- for /f "tokens=3" %%a in ('reg query "HKEY_CLASSES_ROOT\.rar"') do echo %%a
复制代码
作者: jyswjjgdwtdtj 时间: 2023-2-23 21:36
问题是 电脑有自带的解压软件啊?
demon.tw
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |