windows 压缩指定目录下每个目录和文件为zip文件的powershell脚本

某个文件夹下有几十个子文件夹,想要单个压缩每个子文件夹备份到云盘

如果手动操作会有点累,尝试写个脚本吧

版本

适用于win10、win11
其他版本未测试

一、编写脚本

众所周知windows下有两种自带脚本cmd和powershell,微软在主推powershell

百度搜索powershell文件压缩找到了Compress-Archive命令

查看官方文档中该命令的描述

根据文档编写脚本如下

# 传入父目录
param([string]$PathName)
# 遍历该父目录下的所有子目录与文件
foreach($file in dir $PathName)
{
	# 打印文件名字
    $File.Name
    # 生成的源目录
	$source=$PathName + "\" + $File.Name
	# 生成的压缩文件名
	$target=$PathName + "\" + $File.Name + ".zip"
	# 执行压缩操作
	Compress-Archive -Path $source -DestinationPath $target
}

在任意文件夹右键——>新建——>文本文档
在这里插入图片描述
将文件名改为zip_all.ps1——>点击是
在这里插入图片描述
右键点击文件——>点击打开方式
在这里插入图片描述
点击记事本——>点击确定

在这里插入图片描述
粘贴脚本到记事本里——>保存——>关闭记事本

在这里插入图片描述

二、执行脚本

1 打开powershell

点击开始菜单——>输入powershell——>点击以管理员身份运行——>点击是
在这里插入图片描述

2 执行脚本

2.1 修改权限

执行修改权限命令,键盘输入A

set-executionpolicy remotesigned

在这里插入图片描述
如果不修改权限就会像这里一样报个错

2.2 执行脚本

复制如下命令,按回车键执行启动脚本的命令

# 执行脚本,参数应该根据自己情况修改
powershell.exe E:\tmp\temp\zip_all.ps1 -PathName "E:\tmp\tmp"

执行参数解释:

  • E:\tmp\temp\zip_all.ps1这里的E:\tmp\temp是存放脚本的目录
  • "E:\tmp\tmp"这里的"E:\tmp\tmp"是我要打包的所有子目录的父目录

执行打包脚本前的父目录
在这里插入图片描述
执行输出
在这里插入图片描述

打开目录,可以看到每个目录和文件都压缩好了在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是两个使用 PowerShell 编写的 Windows 脚本,分别用于对当前目录下的文件进行加密和解密: 加密脚本 encrypt.ps1: ```powershell # 定义加密密钥 $key = "MySecretKey123" # 获取当前目录下的所有文件 $files = Get-ChildItem -Path . -File # 对每个文件进行加密 foreach ($file in $files) { $encrypted = $file.FullName | ConvertTo-SecureString -Key $key $encryptedFile = $file.FullName + ".encrypted" $encrypted | ConvertFrom-SecureString | Out-File $encryptedFile Remove-Item $file.FullName } # 输出加密成功的信息 Write-Host "成功加密了" $files.Count "个文件。" ``` 解密脚本 decrypt.ps1: ```powershell # 定义加密密钥 $key = "MySecretKey123" # 获取当前目录下的所有加密文件 $files = Get-ChildItem -Path . -File -Filter *.encrypted # 对每个文件进行解密 foreach ($file in $files) { $encrypted = Get-Content $file.FullName | ConvertTo-SecureString $decrypted = $file.FullName -replace '\.encrypted$','' $encrypted | ConvertFrom-SecureString -Key $key | Out-File $decrypted Remove-Item $file.FullName } # 输出解密成功的信息 Write-Host "成功解密了" $files.Count "个文件。" ``` 请注意,这两个脚本也使用了一个自定义的密钥来进行加密和解密。在实际使用中,请根据需要修改密钥,确保安全性。同时,这两个脚本只对当前目录下的文件进行加密和解密,不会对目录下的文件进行操作,如果需要操作目录下的文件,请自行修改脚本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值