Powershell 是一种命令提示符,也是一种编程语言,可让您自动执行任务、动态排序数量惊人的数据,同时还可以享受乐趣!在这个文件中,我们向您展示了四个有趣且相当有用的脚本示例,至少可以学习如何驾驭新的命令提示符。
Powershell 现在默认替换经典的命令提示符 (cmd)自 Windows 10 创意者更新以来。该程序允许您执行 Cmd 可以执行的所有操作,而且还允许经验丰富的开发人员或崭露头角的编码人员出于好奇创建小脚本或实际编码并简化您对计算机的使用。我们尝试通过这几个脚本向您展示既有趣又信息丰富的示例。
这个小脚本可以让您了解循环的工作原理。复制它并在 Powershell 窗口中运行它可以直接查看结果:
$i="*"
Do {
$i="$i*"
$i
}
While ($true)
你更好地理解为什么我们称这个循环为“星环”。要中断程序,请按 键Ctrl + C你的键盘。这段小代码非常有趣,而且可以做更多有用的事情。例如,您可以将星星替换为您喜欢的任何内容。还有其他元素,偶数:
$i=1
Do {
$i
$i++
}
While ($i -le 10)
然后循环将显示包含在中的数字$1
并加 1 只要$i
小于 10(因此$i -le 10
最后,-能指较小的或者少于用英语讲)。也可以通过替换将其转换为倒计时++
旁边的$i
你会明白这是一个变量,由--
。如果您想要火箭起飞式倒计时,还必须将起始值更改为 10,并在末尾添加 0。
如果您希望每次迭代渲染得更慢,例如每隔一秒显示每个数字,那么您可以添加一个命令来将程序暂停每个循环一定的毫秒数:
$i=10
Do {
$i
$i--
Start-Sleep -m 1000
}
While ($i -ge 0)
最后,如果您想在每次执行循环中的一小段代码时添加蜂鸣声,请添加[console]::beep(440,100)
其中 440 是声音的频率(以 Hz 为单位)(它是 A),100 是播放时间。其中给出了以下代码:
$i=10
Do {
$i
$i--
[console]::beep(440,100)
Start-Sleep -m 1000
}
While ($i -ge 0)
请注意,在倒计时的情况下,While
(while...) 无法播放循环,直到达到以下值$i
是“小于0”,因为$i的值从10开始。因此有必要在最后一行替换-le
标杆-ge
这意味着大于或高于法语。
使用 Powershell 制作音乐
如果我们告诉您可以使用 Powershell 制作音乐怎么办?学习 Powershell 编程语言最有趣的方法之一就是对音乐进行编程。直接将歌曲代码复制到 Powershell 窗口中并输入主菜处决他们。
《帝国进行曲》
[console]::beep(440,500)
[console]::beep(440,500)
[console]::beep(440,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,1000)
[console]::beep(659,500)
[console]::beep(659,500)
[console]::beep(659,500)
[console]::beep(698,350)
[console]::beep(523,150)
[console]::beep(415,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,1000)
“不可能的任务”
[console]::beep(784,150)
Start-Sleep -m 300
[console]::beep(784,150)
Start-Sleep -m 300
[console]::beep(932,150)
Start-Sleep -m 150
[console]::beep(1047,150)
Start-Sleep -m 150
[console]::beep(784,150)
Start-Sleep -m 300
[console]::beep(784,150)
Start-Sleep -m 300
[console]::beep(699,150)
Start-Sleep -m 150
[console]::beep(740,150)
Start-Sleep -m 150
[console]::beep(784,150)
Start-Sleep -m 300
[console]::beep(784,150)
Start-Sleep -m 300
[console]::beep(932,150)
Start-Sleep -m 150
[console]::beep(1047,150)
Start-Sleep -m 150
[console]::beep(784,150)
Start-Sleep -m 300
[console]::beep(784,150)
Start-Sleep -m 300
[console]::beep(699,150)
Start-Sleep -m 150
[console]::beep(740,150)
Start-Sleep -m 150
[console]::beep(932,150)
[console]::beep(784,150)
[console]::beep(587,1200)
Start-Sleep -m 75
[console]::beep(932,150)
[console]::beep(784,150)
[console]::beep(554,1200)
Start-Sleep -m 75
[console]::beep(932,150)
[console]::beep(784,150)
[console]::beep(523,1200)
Start-Sleep -m 150
[console]::beep(466,150)
[console]::beep(523,150)
创造你自己的创作
通过剖析我们的命令你可以看到[console]::beep
括号内有两个数字。左边的数字表示声音的频率(例如,A 为 440 Hz),右边的数字表示声音应播放的持续时间(以毫秒为单位)。在《碟中谍》中,我们还看到声音中穿插着命令Start-Sleep -m 150
。这一个的意思是“X 毫秒内不要做任何事情”:非常适合引入沉默!这是你的——请随意在评论中分享你的创作!
让 Powershell 说话
还可以直接在 Powershell 中将文本转换为语音合成。为此,您必须首先通过启动此命令加载语音合成模块,然后创建一个新对象$speak
这将简化其使用。这一切都非常简单,复制以下两行并在 Powershell 中执行:
Add-Type -AssemblyName System.speech
$speak = New-Object System.Speech.Synthesis.SpeechSynthesizer
然后你可以让Powershell的语音合成说话:
$speak.Speak("Je donne ma langue au chat")
甚至可以将您的句子即时转换为 WAV 文件。这需要通过修改以下命令,然后执行它来以某种方式打开/开始将文件保存到硬盘驱动器。然后在完成另一个命令后“关闭”该文件,以便您可以在您选择的程序中读取它:
$speak.SetOutputToWaveFile("C:\users\LE\CHEMIN\QUE\VOUS\AUREZ\CHOISI\test.wav")
然后跑几个$speak.Speak()
包含要转换为文本转语音的句子,然后运行以下命令关闭文件:
$speak.Dispose()
如果您不喜欢该语音,可以通过运行以下命令查看已安装的语音列表:
$speak.GetInstalledVoices().VoiceInfo
复制语音名称并将其粘贴到此命令中以进行更改:
$speak.SelectVoice('LA VOIX QUE VOUS AVEZ CHOISIE')
使用脚本整理 Windows 10 桌面
这个来自 Reddit 的小脚本(感谢 u/Zazierx!)非常实用,我们忍不住与您分享。它既可以让你了解条件运算符(代码相对清晰易读),又可以将Windows 10桌面按文件类型组织到文件夹中。将以下代码复制并粘贴到 Powershell 窗口中并运行:
$pathToUse = "C:\Utilisateurs\$env:username\Bureau"
$video = @(
'3g2','3gp','3gpp','asf','avi','divx','f4v',
'flv','h264','ifo','m2ts','m4v','mkv','mod','mov',
'mp4','mpeg','mpg','mswmm','mts','mxf','ogv','rm',
'srt','swf','ts','vep','vob','webm','wlmp','wmv'
)
$spreadsheets = @(
'csv','ods','xls','xlsx'
)
$images = @(
'arw','bmp','cr2','crw','dcm','dds','djvu','djvu',
'dmg','dng','fpx','gif','ico','ithmb','jp2','jpeg',
'jpg','nef','nrw','orf','pcd','pict','png','psd',
'sfw','tga','tif','tiff','webp','xcf'
)
$presentations = @(
'key','odp','pps','ppsx''ppt','pptm','pptx'
)
$docs = @(
'chm','doc','docm','docx','dot','dotx','eml','eps',
'hwp','log','m3u','odt','pages','pdf','pub','rtf',
'sxw','txt','wpd',' wps','xml','xps'
)
$cadFiles = @(
'dwg','dxf'
)
$misc = @(
'bin','cda','dat','dll','exe','isc',
'img','inf','ipa','kmz','lnk','pes',
'ps','rem','torrent','ttf','vcf'
)
$ebooks = @(
'azw','azw3','epub','fb2''lit','lrf','mbp','mobi',
'opf','prc'
)
$web = @(
'css','htm','html','js','json','php'
)
$arcs = @(
'7z','apk','bz2','cbr','gz','gzip','jar','rar',
'tar','tgz','zip','war'
)
$scripts = @(
'bat','cmd','vb','vbs','vbe','js',
'jse','ws','wsf','wsc','wsh','ps1',
'ps1xml','ps2','ps2xml','psc1','psc2','sql'
)
$files = Get-ChildItem -Path $pathToUse
Foreach ($x in $files){
if($docs.Contains($x.Extension.TrimStart('.').ToLower())){
New-Item -ItemType Directory -Path $pathToUse -Name "Documents" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"Documents"
}
elseif($spreadsheets.Contains($x.Extension.TrimStart('.').ToLower())){
New-Item -ItemType Directory -Path $pathToUse -Name "Spreadsheets" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"Spreadsheets"
}
elseif($images.Contains($x.Extension.TrimStart('.').ToLower())){
New-Item -ItemType Directory -Path $pathToUse -Name "Images" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"Images"
}
elseif($presentations.Contains($x.Extension.TrimStart('.').ToLower())){
New-Item -ItemType Directory -Path $pathToUse -Name "Presentations" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"Presentations"
}
elseif($video.Contains($x.Extension.TrimStart('.').ToLower())){
New-Item -ItemType Directory -Path $pathToUse -Name "Videos" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"Videos"
}
elseif($cadFiles.Contains($x.Extension.TrimStart('.').ToLower())){
New-Item -ItemType Directory -Path $pathToUse -Name "CAD Files" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"CAD Files"
}
elseif($misc.Contains($x.Extension.TrimStart('.').ToLower())){
New-Item -ItemType Directory -Path $pathToUse -Name "Misc" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"Misc"
}
elseif($ebooks.Contains($x.Extension.TrimStart('.').ToLower())){
New-Item -ItemType Directory -Path $pathToUse -Name "E-Books" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"E-Books"
}
elseif($web.Contains($x.Extension.TrimStart('.').ToLower())){
New-Item -ItemType Directory -Path $pathToUse -Name "Web" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"Web"
}
elseif($arcs.Contains($x.Extension.TrimStart('.').ToLower())){
New-Item -ItemType Directory -Path $pathToUse -Name "Archives" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"Archives"
}
elseif($scripts.Contains($x.Extension.TrimStart('.').ToLower())){
New-Item -ItemType Directory -Path $pathToUse -Name "Scripts" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"Scripts"
}
elseif($x.Directory){
New-Item -ItemType Directory -Path $pathToUse -Name "Other - misc" -ErrorAction Ignore
Move-Item -Path $x.FullName -Destination $pathToUse/"Other - misc"
}
else{
Write-Host $x
}
}
通过一些小的修改,您可以轻松地组织任何文件。您还知道其他有趣的 Powershell 脚本吗?在本文的评论中分享它们!