Board logo

标题: [文件操作] 批处理如何实现可选择性是否批量解压指定目录/路径/文件夹里的压缩文件/压缩包 [打印本页]

作者: eclairkk    时间: 2017-3-18 17:30     标题: 批处理如何实现可选择性是否批量解压指定目录/路径/文件夹里的压缩文件/压缩包

本帖最后由 eclairkk 于 2017-3-20 20:19 编辑

******************20170320问题******************
自行测出BUG,求BUG,求解决。
1 文件名为单数字:1.7z、2.7z、3.7z 的时 批处理无法生成正确的配置文件,丢失文件名部分的配置。
2 批处理无法直接输出checked=1,虽然 checked=“1” 效果一样
未验证完整代码链接
  1. https://pan.baidu.com/s/1eSvGLvs
复制代码
.

;---以下是软件自选安装配置文件---
;// <简要说明>
;//
;//“set”一项必须置顶,其他软件放在[SET]之后,名字按1-n数字命名,如 [1],软件数量不限。
;// name/autopath/Manual/ver/ico/Parameter/line/checked这些字段不能改。

;// name---------软件名;
;// autopath-----自动安装软件相对路径;
;// Manual-------自定义安装软件相对路径;
;// ver----------软件版本,如无就自动获取;
;// ico----------软件图标;
;// Parameter----软件安装参数;
;// line---------软件简要说明;
;// checked------软件默认选择状态,"1"为默认选中,空为不选中。
;// 如:"logopath=logo\logo.jpg" 填写图片相对路径,如不填则按默认显示LOGO。图片尺寸:Width:108×Height:340
;// rd=后写出程序结束时删除的文件夹(相对路径即可),如:software等
;// delmyself=后为1将删除程序自身;为2将删除所在文件夹。

[set]
name=软件自选安装管理器
softversion= ""
wait=20
logopath=logo.jpg
Author="更多软件下载点击这里"
Link="http://shareto.blog.1633.com/"
rd=
delmyself=

[1]
name=[系统] 万能驱动助理
autopath=apps\系统\Drivers.exe
Manual=apps\系统\Drivers.exe
ver=6.6.2016.0815
ico=
Parameter=
line=WindowsXP_32位 Windows7_64位 万能驱动
checked=1

******************20170318问题******************
【高难度】多个压缩包根据情况选择解压部分
压缩包类型:7z
压缩包路径:U盘soft目录下的多个二三级目录

需求:
遍历U:\soft目录及子目录下的压缩包。批处理内显示文件名列表。

调用U盘soft目录下的7z解压程序,解压遍历得到的文件,解压前提示选择YN。Y解压,N不解压。

解压路径C:\p
作者: eclairkk    时间: 2017-3-18 17:32

遍历目录 我只找到单列显示的

@echo off
for /f "delims=" %%a in ('dir /s/a-d /b *.rar') do echo %%~na

pause
作者: 老刘1号    时间: 2017-3-18 18:14

一点都不难
作者: eclairkk    时间: 2017-3-18 18:30

本帖最后由 eclairkk 于 2017-3-20 20:15 编辑

******************20170320******************
求BUG,求解决。
自行测出 文件名为单数字:1.7z、2.7z、3.7z 的时 批处理无法生成正确的配置文件,丢失文件名部分的配置。
作者: ShowCode    时间: 2017-3-19 21:05

本帖最后由 ShowCode 于 2017-3-19 22:52 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /s /a-d "U:\soft\*.7z"') do (
  4.     set input=
  5.     set /p input=[Y/N]
  6.     if /i "!input!" equ "Y" (
  7.         "U:\soft\7.exe" e "%%i" -o "C:\p"
  8.     )
  9. )
复制代码

作者: eclairkk    时间: 2017-3-19 22:24

本帖最后由 eclairkk 于 2017-3-20 20:15 编辑

******************20170320******************
求BUG,求解决。
自行测出 文件名为单数字:1.7z、2.7z、3.7z 的时 批处理无法生成正确的配置文件,丢失文件名部分的配置。
作者: bbaa    时间: 2017-3-19 22:30

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /s /a-d "U:\soft\*.7z"') do (
  4.     set input=
  5.     set /p input=[Y/N]
  6.     if /i "!input!"=="Y" (
  7.         "U:\soft\7.exe" e "%%i" -o "C:\p"
  8.     )
  9. )
复制代码

作者: eclairkk    时间: 2017-3-19 22:37

本帖最后由 eclairkk 于 2017-3-20 20:14 编辑

******************20170320******************
求BUG,求解决。
自行测出 文件名为单数字:1.7z、2.7z、3.7z 的时 批处理无法生成正确的配置文件,丢失文件名部分的配置。
作者: eclairkk    时间: 2017-3-19 22:39

本帖最后由 eclairkk 于 2017-3-20 20:15 编辑

******************20170320******************
求BUG,求解决。
自行测出 文件名为单数字:1.7z、2.7z、3.7z 的时 批处理无法生成正确的配置文件,丢失文件名部分的配置。
作者: bbaa    时间: 2017-3-19 22:43

回复 8# eclairkk
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /s /a-d "U:\soft\*.7z"') do (
  4.     set input=
  5. if /i not "!input!"=="A" (
  6.     set /p input=%%~i:[Y/N/A]
  7. )
  8.     if /i "!input!"=="Y" (
  9.         "U:\soft\7.exe" e "%%~i" -o "C:\p"
  10.     )
  11.     if /i "!input!"=="A" (
  12.         "U:\soft\7.exe" e "%%~i" -o "C:\p"
  13.     )
  14. )
复制代码
A是All
作者: eclairkk    时间: 2017-3-19 22:49

本帖最后由 eclairkk 于 2017-3-20 20:15 编辑

******************20170320******************
求BUG,求解决。
自行测出 文件名为单数字:1.7z、2.7z、3.7z 的时 批处理无法生成正确的配置文件,丢失文件名部分的配置。
作者: ShowCode    时间: 2017-3-19 22:52

回复 6# eclairkk


    5楼代码第6行笔误,已更正。
作者: ShowCode    时间: 2017-3-19 22:54

回复 11# eclairkk


这样可以一个一个询问并生成new.bat
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. >"new.bat" type nul
  4. for /f "delims=" %%i in ('dir /b /s /a-d "U:\soft\*.7z"') do (
  5.     set input=
  6.     set /p input=[Y/N]
  7.     if /i "!input!" equ "Y" (
  8.         >>"new.bat" echo "U:\soft\7.exe" e "%%i" -o "C:\p"
  9.     )
  10. )
复制代码

作者: eclairkk    时间: 2017-3-19 22:56

本帖最后由 eclairkk 于 2017-3-20 20:15 编辑

******************20170320******************
求BUG,求解决。
自行测出 文件名为单数字:1.7z、2.7z、3.7z 的时 批处理无法生成正确的配置文件,丢失文件名部分的配置。
作者: eclairkk    时间: 2017-3-19 22:58

本帖最后由 eclairkk 于 2017-3-20 20:16 编辑

******************20170320******************
求BUG,求解决。
自行测出 文件名为单数字:1.7z、2.7z、3.7z 的时 批处理无法生成正确的配置文件,丢失文件名部分的配置。
作者: eclairkk    时间: 2017-3-19 22:59

本帖最后由 eclairkk 于 2017-3-20 20:16 编辑

******************20170320******************
求BUG,求解决。
自行测出 文件名为单数字:1.7z、2.7z、3.7z 的时 批处理无法生成正确的配置文件,丢失文件名部分的配置。
作者: eclairkk    时间: 2017-3-19 23:00

回复  eclairkk


这样可以一个一个询问并生成new.bat
ShowCode 发表于 2017-3-19 22:54



    可否帮忙 改下楼下的代码 做到一个批处理完成?
作者: eclairkk    时间: 2017-3-19 23:01

本帖最后由 eclairkk 于 2017-3-20 20:16 编辑

******************20170320******************
求BUG,求解决。
自行测出 文件名为单数字:1.7z、2.7z、3.7z 的时 批处理无法生成正确的配置文件,丢失文件名部分的配置。
作者: ShowCode    时间: 2017-3-19 23:07

回复 15# eclairkk


    那确实比较奇怪,13楼的代码及时只有前面3行执行成功,也能创建new.bat,有没有可能你找错路径了?
作者: eclairkk    时间: 2017-3-19 23:10

本帖最后由 eclairkk 于 2017-3-20 20:16 编辑

******************20170320******************
求BUG,求解决。
自行测出 文件名为单数字:1.7z、2.7z、3.7z 的时 批处理无法生成正确的配置文件,丢失文件名部分的配置。
作者: eclairkk    时间: 2017-3-19 23:20

本帖最后由 eclairkk 于 2017-3-20 20:16 编辑

******************20170320******************
求BUG,求解决。
自行测出 文件名为单数字:1.7z、2.7z、3.7z 的时 批处理无法生成正确的配置文件,丢失文件名部分的配置。
作者: ShowCode    时间: 2017-3-19 23:24

回复 21# eclairkk


    报错信息是什么?
作者: eclairkk    时间: 2017-3-19 23:25

本帖最后由 eclairkk 于 2017-3-20 20:16 编辑

******************20170320******************
求BUG,求解决。
自行测出 文件名为单数字:1.7z、2.7z、3.7z 的时 批处理无法生成正确的配置文件,丢失文件名部分的配置。
作者: eclairkk    时间: 2017-3-19 23:28

本帖最后由 eclairkk 于 2017-3-20 20:16 编辑

******************20170320******************
求BUG,求解决。
自行测出 文件名为单数字:1.7z、2.7z、3.7z 的时 批处理无法生成正确的配置文件,丢失文件名部分的配置。
作者: ShowCode    时间: 2017-3-19 23:29

回复 23# eclairkk


第二行和第三行可以合并成1行,注意只有1个大于号
echo [copyright]>AppList.ini
作者: eclairkk    时间: 2017-3-19 23:29

本帖最后由 eclairkk 于 2017-3-20 20:16 编辑

******************20170320******************
求BUG,求解决。
自行测出 文件名为单数字:1.7z、2.7z、3.7z 的时 批处理无法生成正确的配置文件,丢失文件名部分的配置。
作者: eclairkk    时间: 2017-3-19 23:30

回复  eclairkk


第二行和第三行可以合并成1行,注意只有1个大于号
echo [copyright]>AppList.ini
ShowCode 发表于 2017-3-19 23:29



    感谢,已改
作者: ShowCode    时间: 2017-3-19 23:33

回复 26# eclairkk


set/p xz=是否解压%line% Y/N:
if /i "%xz%"=="y" (
    set /a eNum+=1
    goto A
)
这里加个计数器就知道有几个啦
作者: eclairkk    时间: 2017-3-19 23:36

本帖最后由 eclairkk 于 2017-3-20 20:16 编辑

******************20170320******************
求BUG,求解决。
自行测出 文件名为单数字:1.7z、2.7z、3.7z 的时 批处理无法生成正确的配置文件,丢失文件名部分的配置。
作者: eclairkk    时间: 2017-3-19 23:47

本帖最后由 eclairkk 于 2017-3-20 20:17 编辑

******************20170320******************
求BUG,求解决。
自行测出 文件名为单数字:1.7z、2.7z、3.7z 的时 批处理无法生成正确的配置文件,丢失文件名部分的配置。
作者: ShowCode    时间: 2017-3-20 09:12

本帖最后由 pcl_test 于 2017-3-20 19:48 编辑

回复 30# eclairkk
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. type nul >AppList.ini.tmp
  4. for /f "delims=" %%i in ('dir /s/b/a-d *.7z') do (
  5.     set line=%%i
  6.     call :output
  7. )
  8. echo [copyright]>AppList.ini
  9. echo Author=有容乃大[YXG8855]>>AppList.ini
  10. echo MyBLOG=http://hi.baidu.com/yxg8855>>AppList.ini
  11. echo [config]>>AppList.ini
  12. echo num=!eNum!>>AppList.ini
  13. echo afterRun=>>AppList.ini
  14. type AppList.ini.tmp >>AppList.ini
  15. start cmd /c "call App.exe"
  16. exit
  17. :output
  18. set/p xz=是否解压%line% Y/N:
  19. if /i "%xz%"=="y" (
  20.     set /a eNum+=1
  21.     goto A
  22. ) else (
  23.     goto B
  24. )
  25. :A
  26. echo !eNum!>>AppList.ini.tmp
  27. echo softname= %line%>>AppList.ini.tmp
  28. echo 7zPath=%line%>>AppList.ini.tmp
  29. echo diskpath=C:\Test>>AppList.ini.tmp
  30. :B
复制代码

作者: eclairkk    时间: 2017-3-20 18:19

本帖最后由 eclairkk 于 2017-3-20 20:17 编辑

******************20170320******************
求BUG,求解决。
自行测出 文件名为单数字:1.7z、2.7z、3.7z 的时 批处理无法生成正确的配置文件,丢失文件名部分的配置。
作者: ShowCode    时间: 2017-3-20 19:19

本帖最后由 pcl_test 于 2017-3-20 19:49 编辑

回复 32# eclairkk

31楼已修改
作者: eclairkk    时间: 2017-3-20 20:07

本帖最后由 eclairkk 于 2017-3-20 20:13 编辑
回复  eclairkk

31楼已修改
ShowCode 发表于 2017-3-20 19:19



本问题基本完成了,还有小BUG待修正:1楼更新百度分享,内有网络搜索得到的程序文件,以及通过批处理生成的配置文件,求解答疑惑。




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