すべてのファイルをある場所から3年以上前に変更された場所に移動するPowerShellスクリプトがあります。私はそれを持っているので、ファイルは新しい場所に移動されたときに元のファイル構造も保持されます。ファイルを移動すると、元の場所に新しい場所を示すショートカットが作成されます
ファイルを新しい場所に移動すると、元のディレクトリにファイルの新しい場所を示すショートカットが作成されます。
これまでのところ私のスクリプトでは、上記をすべて省略したショートカットがあります。
$sourceDir = "C:\Users\bgough\Documents\powershell\docs"
$archiveTarget = "C:\Users\bgough\Documents\archive"
$dateToday = Get-Date
$date = $dateToday.AddYears(-3)
$items = Get-ChildItem $sourceDir -Recurse |
Where-Object {!$_.PSIsContainer -and $_.LastWriteTime -le $date}
foreach ($item in $items)
{
$withoutRoot = $item.FullName.Substring([System.IO.Path]::GetPathRoot($item.FullName).Length);
$destination = Join-Path -Path $archiveTarget -ChildPath $withoutRoot
$dir = Split-Path $destination
if (!(Test-Path $dir))
{
mkdir $dir
}
Move-Item -Path $item.FullName -Destination $destination
$WshShell = New-Object -ComObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$sourceDir")
$Shortcut.TargetPath = $destination
$Shortcut.Save()
}
私のスクリプトでは、このショートカットを作成しようとしましたが、役に立たなかったのです。私はまた、次を読みましたが、あまりにもそれをよく理解していない...
How to create a shortcut using Powershell
Powershell Hard and Soft Links
編集:
私は正常に作成するためのショートカットを持って、でてきました元のフォルダ。しかし、ショートカット名として変数を渡す方法を理解できないようです。現時点では、文字列はハードコーディングされています。これがショートカットの名前です。以下のコードを参照してください:名前を項目のフルネーム(移動されたドキュメントと同じ名前)に設定したいと思います。エクスプローラを使用しているとき
$sourceDir = "C:\Users\bgough\Documents\powershell\docs"
$archiveTarget = "C:\Users\bgough\Documents\archive"
$dateToday = Get-Date
$date = $dateToday.AddYears(-3)
$items = Get-ChildItem $sourceDir -recurse | Where-Object {!$_.PsIsContainer -and $_.LastWriteTime -le $date}
foreach ($item in $items)
{
$withoutRoot = $item.FullName.Substring([System.IO.Path]::GetPathRoot($item.FullName).Length);
$destination = Join-Path -Path $archiveTarget -ChildPath $withoutRoot
$dir = Split-Path $destination
if (!(Test-Path $dir))
{
mkdir $dir
}
Move-Item -Path $item.FullName -Destination $destination
$wshshell = New-Object -ComObject WScript.Shell
$desktop = [System.Environment]::GetFolderPath('Desktop')
$lnk = $wshshell.CreateShortcut($sourceDir + "\ShortcutName.lnk")
$lnk.TargetPath = "$destination"
$lnk.Save()
}
ショートカットまたは(シンボリック)リンクを作成しますか?彼らは全く違ったものです。また、あなたの試みは期待どおりにはいかなかったのですか?間違いましたか? –
私はショートカットの後です。また、私はエラーは発生しませんでしたが、元の場所にショートカットがありませんでした。 –
@AnsgarWiechers文法チェックに感謝します。 (一口..) –