首页
关于我们
友链链接
壁纸下载
更多
统计中心
热点搜索
图床上传
Search
1
[Win DD包] wes7-x86-cn-精简,安装后仅占用1.55G存储空间
25,481 阅读
2
保姆级教程!甲骨文ARM DD成Debian10并升级内核成5.10
6,183 阅读
3
N1教程:Openwrt安装docker webui界面(基于flippy openwrt n1固件)
5,211 阅读
4
ZFAKA小店Docker版之 数据的备份和迁移
5,005 阅读
5
甲骨文oracle ARM 重装 Debian 10
4,685 阅读
Linux学堂
网站建设
网络资源
主题插件
固件工具
主机评测
登录
Search
标签搜索
vps
typecho
linux
bench
lnmp
nginx
ssl
empirecms
openwrt
cloudflare
centos
google
n1
301
mysql
qbittorrent
onedrive
rclone
storage
ssh
V+变量
累计撰写
241
篇文章
累计收到
194
条评论
首页
栏目
Linux学堂
网站建设
网络资源
主题插件
固件工具
主机评测
页面
关于我们
友链链接
壁纸下载
统计中心
热点搜索
图床上传
搜索到
2
篇与
的结果
2025-03-13
7zip进阶教程之二:批量压缩子文件夹为独立压缩包并加密,利用deepseek修改代码
一 前言之前本站介绍过如何利用bat批处理命令和7zip批量压缩文件:7zip进阶教程——巧用7zip批量压缩文件并加密.批量压缩子文件夹为独立压缩包并加密具体命令为:for /d %%X in (*) do "D:\soft\7-Zip\7z.exe" a "%%~dpnX.7z" "%%X" -pwww.xboy.uk -mhe -mx=0注:7zip安装目录 D:\soft\7-Zip\7z.exepwww.xboy.uk p后面的为压缩密码,即www.xboy.uk-mhe 加密文件名-mx=0 意思是压缩等级0(存储,不压缩)。数字越大压缩得越厉害。最小为0,最大为9正常情况下压缩都没有问题,但针对子目录有特殊字符(.\空格\!等)的时候,容易出现目录不完整的情况。如果你赶时间,可以直接跳到最后一步获取代码,前面我尝试了四次都是失败。二 利用deepseek来处理问题尝试1deepseek AI工具是一款非常优秀和逻辑能力强的人工智能软件,今天我们利用deepseek来指导如何解决。1 问题分析命令 for /d %%X in (*) do "D:\soft\7-Zip\7z.exe" a "%%~dpnX.7z" "%%X" -pwww.xboy.uk -mhe -mx=0 无法正确识别文件夹目录,可能由以下原因导致:1)7z格式未明确指定:-mhe 参数(加密文件名)仅适用于7z格式,但命令中未通过 -t7z 指定格式,可能导致默认格式不兼容。2)路径引用问题:若文件夹名含空格或特殊字符,路径需完整包裹引号。虽然命令中已使用引号,但输出文件名或源路径可能仍存在解析问题。文件夹结构处理:命令中 "%%X" 指向文件夹本身,可能导致压缩包包含冗余层级(如将父目录打包)。需调整路径为文件夹内所有内容。3)7z.exe路径或版本问题:路径错误或旧版本7-Zip可能不支持某些参数(如 -mhe)。2 解决方案明确指定7z格式在命令中添加 -t7z 参数,确保加密文件名功能生效:for /d %%X in (*) do "D:\soft\7-Zip\7z.exe" a -t7z "%%~dpnX.7z" "%%X\" -pwww.xboy.uk -mhe -mx=0关键修改:添加 -t7z,并在源路径 "%%X" 后追加反斜杠 \,表示压缩文件夹内所有内容而非文件夹本身。处理特殊字符与空格若文件夹名含空格,需确保路径被完整引用:for /d %%X in (*) do "D:\soft\7-Zip\7z.exe" a -t7z "%%~dpnX.7z" "%%~X\" -pwww.xboy.uk -mhe -mx=0说明:"%%~X\" 中的 ~ 会移除路径外的引号,再通过反斜杠确保解析正确性。验证7z.exe路径与版本检查路径 D:\soft\7-Zip\7z.exe 是否存在,或尝试替换为环境变量 "%ProgramFiles%\7-Zip\7z.exe"。升级7-Zip至最新版本(建议v22.01+),确保支持 -mhe 参数。测试命令与调试在CMD中临时执行(非批处理文件)时,将 %%X 改为 %X:for /d %X in (*) do "D:\soft\7-Zip\7z.exe" a -t7z "%~dpnX.7z" "%X\" -pwww.xboy.uk -mhe -mx=0查看错误提示,若提示“拒绝访问”,需以管理员身份运行CMD。3 完整修正命令示例@echo off setlocal enabledelayedexpansion for /d %%X in (*) do ( "D:\soft\7-Zip\7z.exe" a -t7z "%%~dpnX.7z" "%%X\" -pwww.xboy.uk -mhe -mx=0 )优化点:启用延迟变量扩展(setlocal enabledelayedexpansion)以避免特殊字符解析问题。注意事项:若需压缩到其他目录,修改输出路径(如 "D:\output\%%~nX.7z")并确保有写入权限。-mx=0 表示无压缩仅存储,若需压缩可调整为 -mx=9(最高压缩率)。通过上述调整,命令应能正确识别并批量压缩文件夹。如仍报错,请提供具体错误信息以便进一步排查。三 利用deepseek来处理问题尝试2原来以为采用上一步的修改命令就能解决问题了,结果发现但文件目录中存在.的时候,压缩时会直接忽略.后面的目录名称,导致生产的压缩包名称不完整。于是继续问deepseek。1问题原因当文件夹名称中包含 . 符号时,%%~dpnX 变量会截断 . 后的内容,导致生成的压缩包名称不完整。例如:文件夹名:Project.v1.2错误输出:Project.7z(丢失 .v1.2 部分)2 解决方案改用 %%~nx 变量提取完整文件夹名,并手动拼接路径和 .7z 后缀:for /d %%X in (*) do ( "D:\soft\7-Zip\7z.exe" a -t7z "%%~dpX%%~nX.7z" "%%X\" -pwww.xboy.uk -mhe -mx=0 )关键修改:%%~dpX:提取文件夹的完整路径(盘符+路径,不含名称)%%~nX:提取文件夹的完整名称(包含所有 . 符号)拼接逻辑:"%%~dpX%%~nX.7z" → 生成完整路径+名称的压缩包示例验证文件夹路径:D:\data\Project.v1.2原命令输出:D:\data\Project.7z修正后输出:D:\data\Project.v1.2.7z3 完整命令模板@echo off for /d %%X in (*) do ( "D:\soft\7-Zip\7z.exe" a -t7z "%%~dpX%%~nX.7z" "%%X\" -pwww.xboy.uk -mhe -mx=0 ) pause4 注意事项若路径含空格,需保留引号:"%%~dpX%%~nX.7z"测试前建议备份数据,避免误操作。四 利用deepseek来处理问题尝试3原以为折腾两次肯定能解决了,结果发现好事多磨,采用第二次尝试的代码也没有解决.后面的目录名被截断的问题。1 问题核心当使用 %%~dpnX 变量时,批处理会默认将文件名中 第一个.后的内容识别为扩展名 并截断。若文件夹名含多个.(如 Folder.v1.2),会导致压缩包名称丢失 .v1.2 部分。2 解决方案通过 分离路径与名称 并 手动拼接,确保压缩包名称完整:@echo off for /d %%X in (*) do ( "D:\soft\7-Zip\7z.exe" a -t7z "%%~dpX%%~nX.7z" "%%X\" -pwww.xboy.uk -mhe -mx=0 )关键参数说明|变量 |作用 |示例(文件夹路径:D:\data\Project.v1.2)||%%~dpX |提取文件夹的完整路径 |D:\data||%%~nX |提取文件夹的完整名称 |Project.v1.2||拼接结果 |"%%~dpX%%~nX.7z" |D:\data\Project.v1.2.7z|3 效果对比|原命令 (%%~dpnX.7z) |修正后 (%%~dpX%%~nX.7z)||Project.7z |Project.v1.2.7z|附加说明1)路径含空格:若文件夹路径含空格,保留引号确保解析正确:"%%~dpX%%~nX.7z" → 保持原样即可,无需额外处理2)压缩格式:-t7z 确保启用加密文件名功能(-mhe 仅对7z格式有效)4 调试建议:在CMD中临时测试时,将 %%X 改为 %X:for /d %X in (*) do echo "%~dpX%~nX.7z"此命令仅显示生成的压缩包路径,不会实际压缩。通过此方案,可确保文件夹名称中的 . 符号完整保留在压缩包名称中。五 利用deepseek来处理问题尝试4让人头疼的是,利用第四步的代码还是没有解决问题,我被折腾的没脾气了,俗话说事不过三,我上次尝试完了依然没解决问题。菜鸡难,被折腾的体无完肤的菜鸡更难,但是我还没死心,抱着最后一次希望又去问deepseek了。在批处理脚本中,文件名截断问题通常由变量修饰符对扩展名的误判导致。以下是系统性解决方案及技术细节分析:1变量修饰符截断原理批处理的%%~nX变量默认将文件名中第一个.后的内容识别为扩展名。例如路径Project.v1.2会被解析为:%%~nX → Project(.v1.2被误判为扩展名)%%~xX → .v1.22完整保留名称的解决方案1) 路径与名称分离拼接法通过组合%%~dpX(完整路径)和%%~nX(原始名称)实现:"%%~dpX%%~nX.7z"示例:文件夹D:\data\Project.v1.2 → 压缩包路径D:\data\Project.v1.2.7z优势:兼容含多个.的复杂名称,无需修改系统配置2) 延迟环境变量扩展启用enabledelayedexpansion避免特殊符号干扰:setlocal enabledelayedexpansion for /d %%X in (*) do ( set "folder=%%X" "7z.exe" a "!folder!.7z" "%%X\" )适用场景:名称含!、^等特殊符号时3) 第三方工具辅助使用dir /b获取原始名称,避免批处理变量解析:for /f "delims=" %%X in ('dir /b /ad') do ( "7z.exe" a "%%X.7z" "%%X\" )原理:dir /b直接输出未处理的原始名称3 关键注意事项1)空格路径处理路径含空格时需保留双引号:"%%~dpX%%~nX.7z" → 自动处理空格,无需额外转义2)压缩格式影响7z格式支持-mhe加密文件名(ZIP格式无此功能)扩展名建议显式声明:-t7z强制指定格式3)调试技巧使用echo预验证路径:for /d %X in (*) do echo "%~dpX%~nX.7z" # CMD直接测试时用%X这次尝试depseek没有对代码进行修正,但第三方工具辅助中提出使用dir /b获取原始名称,避免批处理变量解析,这点非常关键,成为我们突破口。六 最终解决方案基于deepseek四次答复,最终得到如下的压缩代码,自用无任何问题。for /f "delims=" %%X in ('dir /b /ad') do ( "D:\soft\7-Zip\7z.exe" a "%%X.7z" "%%X\" -pwww.xboy.uk -mhe -mx=0 )
2025年03月13日
8 阅读
1 评论
0 点赞
2025-03-13
7zip进阶教程——巧用7zip批量压缩文件并加密
一前言1 关于7ZIP7ZIP是一款非常优秀的开源压缩软件,7-zip是一个不错的解压缩工具, 除了界面简介以外, 美中不足的就是没有批量压缩这个功能。7z的界面化操作, 实际是调用了命令行去执行解压缩, 既然知道了7z有命令行, 借助Windows的批处理(.bat),理论上是可以实现批量压缩文件/文件夹这个功能。2 7-Zip下载进入官网 下载 7-Zip-x643 环境参数系统版本: Windows 11 Version 21H2 7-Zip 安装位置: "D:\soft\7-Zip\" 7-Zip 版本: 7-Zip 21.06 (x64)如果压缩的时候文件夹名称还是缺失,可以查看本站另外一篇文章:7zip进阶教程之二:批量压缩子文件夹为独立压缩包并加密,利用deepseek修改代码.二 配置教程利用windows自带记事本将下述命令保存为.bat文件:注意: 需要将 .bat 文件的编码设为 ANSI , 否则中文可能会出现乱码1 压缩文件7z_Bulk_Files.batfor /f %%Z in ('dir /b') do "D:\7-Zip\7z.exe" a %%Z.7z %%Z pause参数说明:"D:\soft\7-Zip\7z.exe": 7-Zip的安装目录, 请自行替换为实际安装目录%%Z: 临时存储文件名/路径的变量%%Z.7z: 压缩后的文件名, %%Z需要与变量名一致pause: 按任意键关闭PowerShell窗口(可省略)测试目录树状图└─ Test_Dir ├─ 7z_Bulk_Files.bat ├─ Bamboo.mp3 ├─ img101.png └─ 图片100.jpg在 Test_Dir 目录下执行 7z_Bulk_Files.bat└─ Test_Dir ├─ 7z_Bulk_Files.bat.7z ├─ Bamboo.mp3.7z ├─ img101.png.7z └─ 图片100.jpg.7z2 压缩文件(加密)7z_Bulk_Encrypt_Files.batfor /f %%Z in ('dir /b') do "D:\7-Zip\7z.exe" a %%Z.7z %%Z -pwww.vvars.com -mhe pause参数说明:"D:\soft\7-Zip\7z.exe": 7-Zip的安装目录, 请自行替换为实际安装目录-pwww.vvars.com: 压缩文件的密码是 www.vvars.com-mhe: 加密文件名(可省略)测试目录树状图└─ Test_Dir ├─ 7z_Bulk_Encrypt_Files.bat ├─ img101.png ├─ img102.jpg ├─ 光年.mp3 └─ 图片100.jpg在 Test_Dir 目录下执行 7z_Bulk_Encrypt_Files.bat└─ Test_Dir ├─ 7z_Bulk_Encrypt_Files.bat.7z ├─ img101.png.7z ├─ img102.jpg.7z ├─ 光年.mp3.7z └─ 图片100.jpg.7z已知问题:文件名包含空格会导致该文件无法压缩会将bat脚本也一并压缩会将执行目录下的文件夹也一并压缩文件的原后缀不会"清除"3压缩目录7z_Bulk_Folders.batfor /d %%D in (.\*) do "D:\7-Zip\7z.exe" a "%%D.7z" "%%D\*" pause参数说明:"D:\7-Zip\7z.exe": 7-Zip的安装目录, 请自行替换为实际安装目录%%D: 临时存储目录路径的变量测试目录树状图└─ Test_Dir ├─ 7z_Bulk_Folders.bat ├─ img │ └─ img901.png ├─ music │ └─ 倒数.mp3 ├─ New folder │ └─ New Microsoft Word.docx └─ 图片 └─ 图片900.jpg在 Test_Dir 目录下执行 7z_Bulk_Folders.bat└─ Test_Dir ├─ img.7z ├─ music.7z ├─ New folder.7z └─ 图片.7z4压缩目录(加密)7z_Bulk_Encrypt_Folders.batfor /d %%D in (.\*) do "D:\7-Zip\7z.exe" a "%%D.7z" "-pwww.vvars.com" "-mhe" "%%D\*" pause参数说明:"D:\soft\7-Zip\7z.exe": 7-Zip的安装目录, 请自行替换为实际安装目录-pwww.vvars.com: 压缩文件的密码是 www.vvars.com-mhe: 加密文件名(可省略)测试目录树状图└─ Test_Dir ├─ 7z_Bulk_Encrypt_Folders.bat ├─ img │ └─ img901.png ├─ music │ └─ 倒数.mp3 ├─ New folder │ └─ New Microsoft Word.docx └─ 图片 └─ 图片900.jpg在 Test_Dir 目录下执行 7z_Bulk_Encrypt_Folders.bat└─ Test_Dir └─ img.7z └─ music.7z └─ New folder.7z └─ 图片.7z5 批量压缩文件夹,子文件夹独立压缩包并加密for /d %%X in (*) do "D:\soft\7-Zip\7z.exe" a "%%~dpnX.7z" "%%X" -pwww.vvars.com -mhe -mx=0注意: 需要将 .bat 文件的编码设为 ANSI , 否则中文可能会出现乱码
2025年03月13日
5 阅读
1 评论
0 点赞