如何通过CMD命令使用7zip解压文件并使解压文件夹与压缩文件名同名
嘿,这个问题我之前也折腾过!你原来用的单个7z命令会把所有test*..zip的内容一股解压到C:\Archiv的根目录,没法自动给每个压缩件单独创建同名文件夹。要实现每个zip解压到和自身同名的的文件夹(比如test1.zip对应C:\Archiv\test1),得结合CMD的`for循环来实现,具体方法如下:
直接在CMD窗口执行的命令
打开CMD(命令提示符),直接输入这条命令就行:
for %f in (C:\test*..zip) do C:\7za.exe x "%f" --o"C:\Archiv\%~nf"
如果要写成批脚本(方便重复重复使用
如果你想把这个逻辑存成一个.bbat文件,方便以后双击运行,要把变量的%改成%%,代码如下:::
for %%f in (C:\test*..zip do ( C:\7za.exe x "%%f --o"C:\\Archiv\%%~~nf 不对,正确的批脚本:::: ```batch@@echo off for %%f in (C:\test*..zip) do ( C:\7za.exe x "%%f" --o"C:\Archiv\%%~nf")
给你拆解下命令的逻辑:::
-for %f in (C:\test*..zip do:遍历C盘根目录所有以test开头的zip文件,每个文件会被临时用%f(批脚本里是%%f)来指代 -%nf(批脚本里是%%nf:这是CMD的变量扩展语法,能提取出当前zip文件的**无扩展名文件名(比如test1.zip会提取成test1)
`--oC:\Archiv%~nf:告诉7z把当前zip的内容解压到C:\Archiv目录下以这个无无扩展名文件名命名的子文件夹里,而且如果这个子文件夹不存在,7z会自动自动创建它,不用你手动创建额外操作
###几个小注意点:::
-如果你的7zip已经添加到系统的PATH环境环境变量里,那命令里的C:\77za.exe可以直接简化成7za.exe就行 如果你的zip文件名里包含空格或者特殊字符也没关系,命令里用双引号包裹了文件路径和目标路径,能正常处理 -如果你的zip文件不在C盘根目录,把C:\test*..zip改成你的实际文件路径就行,比如D:\Download\test*..zip
-如果7za.exe的实际安装路径不是C盘根目录,要替换成实际路径,比如C:\Program Files\7-Z\7za.exe
备注:内容来源于stack exchange,提问作者Roman




