本文目录导读:

Windows (PowerShell)
基础音量控制
# 音量控制脚本 (volume.ps1)
param(
[Parameter(Mandatory=$true)]
[ValidateSet("up", "down", "mute", "set")]
[string]$Action,
[int]$Value = 10
)
Add-Type -TypeDefinition @"
using System.Runtime.InteropServices;
public class VolumeHelper {
[DllImport("user32.dll")]
public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
}
"@
switch ($Action) {
"up" {
# 音量增加 (模拟音量键)
[VolumeHelper]::keybd_event(0xAF, 0, 0, [UIntPtr]::Zero)
[VolumeHelper]::keybd_event(0xAF, 0, 2, [UIntPtr]::Zero)
Write-Host "音量增加"
}
"down" {
# 音量减少
[VolumeHelper]::keybd_event(0xAE, 0, 0, [UIntPtr]::Zero)
[VolumeHelper]::keybd_event(0xAE, 0, 2, [UIntPtr]::Zero)
Write-Host "音量减少"
}
"mute" {
# 静音
[VolumeHelper]::keybd_event(0xAD, 0, 0, [UIntPtr]::Zero)
[VolumeHelper]::keybd_event(0xAD, 0, 2, [UIntPtr]::Zero)
Write-Host "切换静音"
}
}
使用第三方库 (更精确控制)
# 需要安装模块: Install-Module -Name AudioDeviceCmdlets Import-Module AudioDeviceCmdlets # 设置音量为50% Set-AudioDevice -Volume 50 # 获取当前音量 Get-AudioDevice -Volume # 增加音量百分比 $current = Get-AudioDevice -Volume Set-AudioDevice -Volume ($current + 10)
Linux (Bash)
使用 PulseAudio
#!/bin/bash
# volume.sh
case "$1" in
up)
pactl set-sink-volume @DEFAULT_SINK@ +10%
;;
down)
pactl set-sink-volume @DEFAULT_SINK@ -10%
;;
mute)
pactl set-sink-mute @DEFAULT_SINK@ toggle
;;
set)
pactl set-sink-volume @DEFAULT_SINK@ $2%
;;
get)
pactl get-sink-volume @DEFAULT_SINK@
;;
*)
echo "用法: $0 {up|down|mute|set <音量>|get}"
exit 1
;;
esac
使用 ALSA
#!/bin/bash
# alsa-volume.sh
case "$1" in
up)
amixer set Master 5%+
;;
down)
amixer set Master 5%-
;;
mute)
amixer set Master toggle
;;
*)
echo "用法: $0 {up|down|mute}"
;;
esac
Python 跨平台
# volume.py
import sys
import subprocess
import platform
class VolumeController:
def __init__(self):
self.system = platform.system()
def set_volume(self, percent):
"""设置音量百分比"""
if self.system == "Windows":
self._set_windows_volume(percent)
elif self.system == "Linux":
self._set_linux_volume(percent)
elif self.system == "Darwin": # macOS
self._set_mac_volume(percent)
def _set_windows_volume(self, percent):
# 使用 nircmd 或 PowerShell
subprocess.run(f'cmd /c "nircmd setvolume {percent}"', shell=True)
def _set_linux_volume(self, percent):
subprocess.run(f'pactl set-sink-volume @DEFAULT_SINK@ {percent}%', shell=True)
def _set_mac_volume(self, percent):
subprocess.run(f'osascript -e "set volume output volume {percent}"', shell=True)
# 使用示例
if __name__ == "__main__":
vc = VolumeController()
if len(sys.argv) > 1:
if sys.argv[1] == "set" and len(sys.argv) > 2:
vc.set_volume(int(sys.argv[2]))
elif sys.argv[1] == "mute":
vc.set_volume(0)
elif sys.argv[1] == "unmute":
vc.set_volume(50)
else:
print("用法: python volume.py set <音量>")
macOS (AppleScript)
-- volume.applescript
on run argv
set volValue to item 1 of argv as integer
set volume output volume volValue
end run
或使用 Bash:
#!/bin/bash
# mac-volume.sh
case "$1" in
up)
osascript -e "set volume output volume (output volume of (get volume settings) + 10)"
;;
down)
osascript -e "set volume output volume (output volume of (get volume settings) - 10)"
;;
set)
osascript -e "set volume output volume $2"
;;
mute)
osascript -e "set volume output muted true"
;;
unmute)
osascript -e "set volume output muted false"
;;
*)
echo "用法: $0 {up|down|set <音量>|mute|unmute}"
;;
esac
使用建议
- Windows 用户:推荐安装 AudioDeviceCmdlets 模块获取更精确控制
- Linux 用户:根据系统音频服务选择 PulseAudio 或 ALSA
- 跨平台需求:使用 Python 脚本便于统一管理
- 定时控制:可以结合 cron 或 Windows 任务计划程序实现定时调节音量
如果你有特定需求(比如定时调节、根据时间自动调整等),我可以提供更针对性的方案。