编写一个Win10环境下bat脚本,使用7-zip解压缩当前文件夹下的所有文件并以原文件名单独命名
时间: 2024-03-25 08:41:32 浏览: 39
可以使用以下的命令行脚本来实现:
```
@echo off
set "seven_zip=C:\Program Files\7-Zip\7z.exe"
for %%i in (*.zip,*.rar,*.7z) do (
"%seven_zip%" x "%%i" -o"%%~ni" -aoa
)
```
这个脚本假定你已经将 7-Zip 程序安装在了 `C:\Program Files\7-Zip\` 下面。如果你安装在了其他位置,需要修改 `seven_zip` 变量的值。
脚本使用了一个 for 循环来遍历当前目录下的所有 ZIP、RAR 和 7Z 格式的压缩文件。对于每个文件,使用 7-Zip 的 `x` 命令来解压缩它们,并将文件解压缩到与原文件名相同的目录中,使用 `-o` 参数指定目标文件夹,`-aoa` 参数表示覆盖已经存在的同名文件。
注意,这个脚本不会对子目录进行操作,只会对当前目录下的文件进行解压缩。如果需要对子目录进行操作,可以加上 `/s` 参数,例如:
```
for /r %%i in (*.zip,*.rar,*.7z) do (
"%seven_zip%" x "%%i" -o"%%~dpi%%~ni" -aoa
)
```
这个脚本使用了 `/r` 参数来递归地遍历子目录,使用 `%~dpi` 来获取文件所在的目录的路径,使用 `%~ni` 来获取文件名(不带扩展名),从而得到解压缩后的文件夹路径。
相关问题
编写一个bat脚本,使用7-zip解压缩当前文件夹下的所有文件并以原文件名单独命名
可以使用以下的命令行脚本来实现:
```
@echo off
set "seven_zip=C:\Program Files\7-Zip\7z.exe"
for %%i in (*.zip,*.rar,*.7z) do (
"%seven_zip%" x "%%i" -o"%%~ni" -aoa
)
```
这个脚本假定你已经将 7-Zip 程序安装在了 `C:\Program Files\7-Zip\` 下面。如果你安装在了其他位置,需要修改 `seven_zip` 变量的值。
脚本使用了一个 for 循环来遍历当前目录下的所有 ZIP、RAR 和 7Z 格式的压缩文件。对于每个文件,使用 7-Zip 的 `x` 命令来解压缩它们,并将文件解压缩到与原文件名相同的目录中,使用 `-o` 参数指定目标文件夹,`-aoa` 参数表示覆盖已经存在的同名文件。
注意,这个脚本不会对子目录进行操作,只会对当前目录下的文件进行解压缩。如果需要对子目录进行操作,可以加上 `/s` 参数,例如:
```
for /r %%i in (*.zip,*.rar,*.7z) do (
"%seven_zip%" x "%%i" -o"%%~dpi%%~ni" -aoa
)
```
这个脚本使用了 `/r` 参数来递归地遍历子目录,使用 `%~dpi` 来获取文件所在的目录的路径,使用 `%~ni` 来获取文件名(不带扩展名),从而得到解压缩后的文件夹路径。
写一个bat脚本或者vbs文件,功能是持续运行,将下载到某文件夹的压缩包自动解压出来,不需要手动解压缩
### 回答1:
我可以给你一个参考:@echo off
:start
for %%a in (*.zip) do (
"C:\Program Files\7-Zip\7z.exe" x -o"%%~na" "%%a"
)
timeout /t 5 /nobreak
goto start
exit
### 回答2:
你可以写一个bat脚本来实现这个功能。首先,确保你已经安装了解压缩工具,如7-Zip。然后按照以下步骤编写脚本:
1. 打开记事本或其他文本编辑器。
2. 输入以下命令:
```bat
@echo off
:loop
echo 正在检查是否有新的压缩包...
for /R "路径\to\压缩包文件夹" %%I in (*.zip) do (
echo 解压缩 %%~nI.zip...
"C:\Program Files\7-Zip\7z.exe" x "%%I" -o"路径\to\解压缩路径"
del "%%I"
)
timeout /t 60 > nul
goto loop
```
请注意将“路径\to\压缩包文件夹”替换为实际的压缩包所在文件夹的路径,将“路径\to\解压缩路径”替换为你希望解压缩到的文件夹路径。
4. 将文件保存为一个.bat文件,例如"auto_unzip.bat"。
5. 双击运行.bat文件,它将持续监视并自动解压缩目标文件夹中的压缩包。
这个脚本会循环检查指定文件夹中是否有新的压缩包出现。如果找到新的压缩包,它会使用7-Zip工具进行解压缩,并删除原始的压缩包文件。然后,它会等待60秒,然后再次检查是否有新的压缩包。这个过程将持续运行,直到你手动停止脚本。
希望这可以帮助到你!
### 回答3:
以下是一个使用vbs文件实现持续自动解压缩的例子:
```vbscript
Set objFSO = CreateObject("Scripting.FileSystemObject")
' 设置要监控的文件夹路径
strFolder = "C:\目标文件夹路径"
' 创建监控对象
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery("SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'CIM_DirectoryContainsFile' and TargetInstance.GroupComponent= 'Win32_Directory.Name=""" & strFolder & """'")
' 循环检测文件夹中的新文件
Do
Set objLatestEvent = colMonitoredEvents.NextEvent()
' 检测到新的文件
If objLatestEvent.TargetInstance.PartComponent Like "*Win32_Directory.Name=""" & strFolder & """%" Then
' 解压缩文件
strZipFile = Replace(objLatestEvent.TargetInstance.PartComponent, "|" & strFolder & "\", "")
strDestFolder = objFSO.GetParentFolderName(strZipFile)
Set objShellApp = CreateObject("Shell.Application")
Set objSource = objShellApp.NameSpace(strZipFile).Items
Set objDestination = objShellApp.NameSpace(strDestFolder)
objDestination.CopyHere objSource
End If
Loop
```
请注意,以上脚本需要替换`strFolder`变量的值为您需要监控的文件夹路径,脚本将会一直运行并在文件夹中检测到新文件时自动解压缩。此外,您需要将文件名后缀为.vbs保存,然后双击运行该文件即可开始自动解压缩。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)