又遇到了问题,同学给的文件夹里面都是压缩包,并且有365个文件夹,因此要对其进行批处理解压,并且还是.gz文件。解决了,一步一步来吧:
1、首先将winrar导入到系统路径,找到winrar的安装路径,然后将里面的WinRAR.exe复制粘贴到C:\Windows\System32下面,这样就可以在cmd中直接调用winrar啦。
2、文件夹结构如下:
于是要对每个进行处理,写bat批处理文件:
@echo off
for /f %%i in ('"dir /ad/b/on *.*"') do (
echo %%i
winrar x -o+ %%i/*.gz %%i
)
pause
讲解(按行):
(1)@为不输出当前行,echo off是取消显示命令
(2)for循环中,脚本语言使用%%variable做变量,要加两个百分号,变量名大小写区分,/f的话就是遍历整体里面的内容,若不加则无法遍历file,后面的dir是当前路径,加参数(只列出当前用到的),也就是只按顺序输出文件夹名:
/A 显示具有指定属性的文件。
attributes D 目录 R 只读文件
H 隐藏文件 A 准备存档的文件
S 系统文件 - 表示“否”的前缀
/B 使用空格式(没有标题信息或摘要)。
/O 用分类顺序列出文件。
sortorder N 按名称(字母顺序) S 按大小(从小到大)
E 按扩展名(字母顺序) D 按日期/时间(从先到后)
G 组目录优先 - 颠倒顺序的前缀
(3)输出一下文件夹名
(4)winrar进行解压,解压到当前文件夹且删除源文件若存在同名文件则进行覆盖,这里解释一下参数:
x 解压文件
-o+ 覆盖同名文件
网友评论