<p>我想这就是你要找的。此函数只接受<strong>文件</strong>作为输入,请注意,我使用的是下面的<code>Get-ChildItem -File</code>。另一点需要考虑的是,如果在目标文件夹中存在一个具有相同名称的^ {< CD2>},{{CD3>}将抛出以下错误:</P>
<p><code>Move-Item : Cannot create a file when that file already exists.</code></p>
<p>如果要替换现有文件,可以使用<code>-Force</code>,如果存在同名的现有文件,可以在其中添加新条件</p>
<pre><code>function DeplacerDansBonDossier {
[cmdletbinding()]
param(
[parameter(mandatory,valuefrompipeline)]
[System.IO.FileInfo]$File
)
begin
{
$Paths = @{
Documents = "C:\Users\dgoud\Desktop\TP4\Documents"
Music = "C:\Users\dgoud\Desktop\TP4\Musique"
Video = "C:\Users\dgoud\Desktop\TP4\VidBo"
}
}
process
{
switch -Regex($File.Extension)
{
'^\.txt$'{
$File | Move-Item -Destination $Paths['Documents']
Write-Verbose ('Moved {0} to {1}' -f $file.Name,$Paths['Documents'])
break
}
'^\.mp3$|^\.wav$'{
$File | Move-Item -Destination $Paths['Music']
Write-Verbose ('Moved {0} to {1}' -f $file.Name,$Paths['Music'])
break
}
'^\.mp4$|^\.mkv$'{
$File | Move-Item -Destination $Paths['Video']
Write-Verbose ('Moved {0} to {1}' -f $file.Name,$Paths['Video'])
break
}
}
}
}
</code></pre>
<p>如何使用该功能:</p>
<pre><code>Get-ChildItem 'C:\Users\dgoud\Desktop\TP4\Telechargement' -File | DeplacerDansBonDossier
# If you want to see which Files are being moved and their destination
# you can use -Verbose
Get-ChildItem 'C:\Users\dgoud\Desktop\TP4\Telechargement' -File | DeplacerDansBonDossier -Verbose
</code></pre>