Powershell笔记

操作符

变量前面加$

参数前面加-

注释前面加#

代码结尾无分号

逻辑运算符

比大小

  • -eq‌:等于
  • ‌**-ne**‌:不等于
  • ‌**-gt**‌:大于
  • ‌**-ge**‌:大于等于
  • ‌**-lt**‌:小于
  • ‌**-le**‌:小于等于

布尔运算

-and -or -not -xor

数据类型(常用)

int

float

string使用单引号或双引号定义,双引号支持变量插值

判断

复制代码
if(判断语句){

}

循环

for循环

bash 复制代码
for ($i = 1; $i -le 10; $i++) {
    Write-Host "当前数字: $i"
}

foreach循环

复制代码
foreach ($XXX in $XXXs){
    
}

while循环

bash 复制代码
$count = 1
while ($count -le 5) {
    Write-Host "计数: $count"
    $count++
}

函数

函数定义

复制代码
function 函数名{
    param(
        [类型]$参数名1,
        [类型]$参数名2,
        [类型]$参数名3=默认值
    )
    函数体
}

函数调用

复制代码
函数名 -参数名1 值 -参数名2 值 -参数名3 值

常用API

Get-ChildItem得到文件夹成员

复制代码
Get-ChildItem -Path 路径 -Filter "*.后缀名"
#路径写.代表脚本所在的路径

Write-Host打印

复制代码
Write-Host "提示语" -ForegroundColor 颜色

ChangeExtension改后缀名

复制代码
[System.IO.Path]::ChangeExtension($file.Name, ".jpg")

$PSScriptRoot当前脚本的目录

报错

对webp使用System.Drawing.Image::FromFile($_.FullName)提示内存不足

System.Drawing.Image不支持webp。

一些脚本

调整jpg的质量

在倒数第2行的-quality后面输入百分比质量,结果在New文件夹。

复制代码
function ChangeImageQuality{
    param (
        [string]$imagePath,
        [string]$outputPath,# 设置输出路径和新的图像
        [ValidateRange(0, 100)]
        [int]$quality = 75# 质量范围从1到100,100为最高
    )
    Add-Type -AssemblyName System.Drawing
    # 加载图像
    $image = [System.Drawing.Image]::FromFile($imagePath)

    # 创建一个JPEG编码器的实例
    $encoder = [System.Drawing.Imaging.ImageCodecInfo]::GetImageEncoders() | Where-Object { $_.MimeType -eq "image/jpeg" }
    $encoderParams = New-Object System.Drawing.Imaging.EncoderParameters(1)
    $encoderParams.Param = New-Object System.Drawing.Imaging.EncoderParameter([System.Drawing.Imaging.Encoder]::Quality, $quality)

    # 保存图像
    $image.Save($outputPath, $encoder, $encoderParams)

    # 清理资源
    $image.Dispose()
    $imagePath+"已修改完成"
}
$path=$PSScriptRoot
$newPath=$path+"\New"
if (-not (Test-Path -Path $newPath)) {
    # 文件夹不存在,创建文件夹
    New-Item -ItemType Directory -Path $newPath
    Write-Host "创建了文件夹$newPath"
    }
$files = Get-ChildItem -Path $path -Filter "*.jpg"
foreach($file in $files) {
#file.Name是完整文件名,BaseName是不包括扩展名的文件名
    #$file.Name
    $newName=$newPath+"\"+$file.BaseName+"_1.jpg"
    ChangeImageQuality -imagePath $path"\"$file -outputPath $newName -quality 70
}

删除文件夹里某类型文件

这里是webp

复制代码
Get-ChildItem -Path "." -Recurse -Filter "*.webp" | Remove-Item -Force
相关推荐
Blockbuater_drug2 天前
setx 设完读不到?Windows 系统环境变量作用域、截断坑与 AI 工具密钥管理
注册表·powershell·api key·mcp server·windows 环境变量·setx·环境变量插值
五_谷_丰_登4 天前
cmake脚本学习——持续更新
脚本·cmake
szephyr5 天前
用 Python 写自动化脚本:定时任务、文件批处理、自动出报表
python·自动化·pandas·脚本·定时任务
2601_9622998812 天前
Linux执行Python脚本方法
linux·python·脚本·解释器·shebang
bosins13 天前
Windows IIS 配置本地HTTPS 全流程指南:自签名证书 + 端口绑定 + 避坑详解
powershell·openssl
DolphinDB16 天前
循环加速最高达 3 倍!DolphinDB 动态脚本优化免费开启,零代码改造即可投入生产
脚本·时序数据库·dolphindb
2601_9622953316 天前
使用python实现一个浏览器自动化的脚本
python·脚本·rpa·浏览器自动化·操作
2601_9622998819 天前
Linux下运行Python脚本
linux·python·ubuntu·脚本·命令
DogDaoDao25 天前
Windows 开发提效工具全景指南:60+ 工具的工程化分层配置
windows·git·程序员·开发工具·powershell·everything·msys2
YuSun_WK1 个月前
shell脚本
shell·脚本