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
相关推荐
阆遤2 天前
Windows环境安装Hermes Desktop安装
powershell·ai agent·hermes desktop
大大杰哥9 天前
Windows 批处理语法笔记:从入门到一键部署项目
脚本·命令行
一念&10 天前
油猴脚本教程——元数据块
javascript·浏览器·脚本·油猴
console.log('npc')12 天前
Windows试用期重置工具,纯官方 / 安全教程
运维·自动化·typora·脚本
DONSEE广东东信智能读卡器20 天前
用PowerShell实现Windows 本地 WSS/HTTPS 自签名证书配置方法
windows·网络协议·https·powershell·身份证阅读器
DogDaoDao20 天前
Windows 下 Git 报错:`touch` 无法识别 —— 原因分析与 7 种解决方案(从入门到精通)
windows·git·程序员·npm·powershell·cmd·touch
console.log('npc')22 天前
Windows 11 安装 WSL2 + Ubuntu + Docker + Codex + Sub2API 教学
windows·docker·powershell·ubantu·codex
CV工程师(Ctrl)23 天前
Codex 在 Windows 中文路径执行bash命令编码问题复盘
powershell·codex
Hehuyi_In25 天前
postgres-howto 学习笔记
笔记·学习·postgresql·脚本·how to
vortex51 个月前
PowerShell 的命令补全方案: PSReadLine + PSCompletions + argc + Carapace
windows·powershell