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

好像也可以直接用存在文件里的密码
  1. 7z.exe x raddr.7z -oC:\1\ -aoa -bse0 -bsp2 <pwd.txt
复制代码
1

评分人数

    • fzp070: 感谢提供解决方法思路!技术 + 1

TOP

回复 16# idwma


    感谢解答!
明天有时间,实际验证下,谢谢分享帮助!

TOP

本帖最后由 fzp070 于 2022-8-13 23:52 编辑

回复 16# idwma


    感谢解答,从文本接收密码的方法,已经试了,这个不行哦

顺便说下目前的进展:

1、上面说得将""双引号之类的代码转换下再作密码接收,弄了好久我没搞定,因为在遇到"|^&等各种特殊符合在一起的密码时,会出错。---目前个人能力暂无法搞定

2、我目前的方法是在密码传进7z解压前进行分类操作:
A、将无英标双引号的密码传给7z的-p密码接收参数,
  1. "%paths%\7z.exe" x %paths1% -p"!pw!" -o%paths2%\ -aoa -bse0 -bsp2>7zOut.txt&&goto pass
复制代码
B、将有双引号但无^符号的传递给echo !pw!|7z,
  1. echo !pw!|7z.exe x %paths1% -o%paths2%\ -aoa -bse0 -bsp2>%paths3%\7zOut.txt&&goto pass
复制代码
C、将既有双引号且有^号的密码,传给密码手动输入界面方案。同时在进入密码手动输入操作前,将密码传递给系统剪切板,在进入密码操作后,按Ctrl+V 或鼠标右键将密码输进去,只需按回车即可。
  1. set/p="!pw!"<nul|clip&&"%paths%\7z.exe" x %paths1% -o%paths2%\ -aoa -bse0 -bsp2>7zOut.txt&&goto pass
复制代码
新问题:
目前三种分类中,A方案、B方案,没什么问题。
但C方案中一般的密码也没问题,只是在遇到中文双引号的密码时会变成英文双引号,导致仍需要人去修正。
我试了用如下命令粘贴出来是的没有问题,但不知道咋将这个粘贴结果传给7z手动输入界面的作为密码接收?
  1. powershell -sta "add-type -as System.Windows.Forms; [windows.forms.clipboard]::GetText()"
复制代码
例如密码为:x^1@#$%&*(:&&}{|3^5"6”4-_aa

大佬们能帮忙看看吗?谢谢了
回复 12# Batcher

TOP

回复 18# fzp070


    CMD窗口粘贴中文双引号 变英文双引号的问题,已经解决了,方法:

CMD窗口--标题栏 右键 属性--选项页--编辑选项--取消勾选【粘贴时筛选剪贴板内容(F)】,这样就能 原样粘贴 了。

这样的话只要粘贴结果正确,我再研究下,看能不能自动粘贴、并在粘贴后 自动回车,实现无人操作即可自动输入密码解压缩。---待明天研究,先睡觉了

TOP

首先说下结论:
问题已解决。目前工具已实现任何密码均可以自动输入密码进行解压缩。

具体经过:
1、之前在尝试自动输入密码和回车的时候,发现如下三种方式输出密码到剪贴板方式,仍会存在一些问题,如下示例密码就不行,无论加双引号和不加双引号都会出错。
  1. echo !pw!|CLIP
  2. set/p="!pw!"|clip
  3. echo "!pw!" |xclip.exe" /set
复制代码
  1. [b][color=Red]示例密码:[/color][/b]1"@>::”#<$%"*%@“=?(*::"=*}{3"5*!!?%&|=6$”"4……-^_a=*a`~*()-_=+aa
复制代码
2、故又搜索找了好几种方法,包括powershell方式,最终发现 管理员老大在 Batcher 在2008年就分享一个非常好的【支持命令行调用的剪贴板工具winclip.exe】,分享地址:
http://www.bathome.net/viewthrea ... =%BC%F4%CC%F9%B0%E5

3、winclip.exe工具,好像没法直接将字符串发送到剪贴板,但可以从文本中读取后再输出到剪贴板,之后再调取剪贴板内容进行输出到7z,大概流程的代码如下
  1. ::输出当前获取的密码到1.txt文本
  2. echo !pw!>1.txt
  3. ::从1.txt文本获取并复制到剪贴板
  4. winclip.exe" -c 1.txt
  5. ::从剪贴板粘贴
  6. winclip.exe -p
  7. ::这是运用到7z密码输入的方法,这种方式会自动输密码,且会自动回车,非常棒,完美解决本贴问题。
  8. "%paths%\winclip.exe" -p|"%paths%\7z.exe” x %paths1% -o%paths2%\ -aoa -bse0 -bsp2>%paths3%\7zOut.txt&&goto pass
复制代码
最终感谢:
本次问题能最终解决,离不开本贴所有回复的大佬 给予提供解决方法和解决思路,也离不开【批处理之家】的N多优秀资源和各种问题求助解决信息,非常感谢论坛和大家的帮助!
1

评分人数

TOP

本帖最后由 WBATW 于 2023-4-1 12:14 编辑

  一条鱼,有头有尾

TOP

终于找到解决办法 特来注册感谢

TOP

我也来说一下吧
使用echo命令过管道,"|^&之类的字符需要二次转义
以^为例,要表示^,就需要转义^,即^^,要表示^^,就需要对^^中的每一个^再次进行转义,即^^^^

假设压缩包为密码单个的^,过管道方式测试压缩包(^跟|之间不能有空格)
  1. echo ^^^^|7z t aaaaaaa.7z
复制代码
假设压缩包密码为单个的^,使用普通变量,过管道方式测试压缩包(|符号左边不能有空格)
  1. set "pw=^"
  2. echo %pw:^=^^^^%|7z t aaaaaaa.7z
复制代码

TOP

返回列表