robocopyコマンドでディレクトリの同期するためカレントディレクトリ名をもとに保存先のパスを自動生成するスクリプトです。
スクリプト
#
# カレントディレクトリの複製を同期(コピー)
#
# 保存先のルートディレクトリ(ファイルサーバー)
$destination_root = "X:\01_sync"
# 保存元のディレクトリ(カレントディレクトリ)
$source_dir = (Get-Location).Path
# 「:」を排除
$name = $source_dir.Replace(":", "")
# 「/」を「_」に置き換え
$name = $name.Replace("\", "_")
# 保存先のパスを生成
$destination_dir = Join-Path $destination_root $name
# 保存先のディレクトリを作成
if (-not (Test-Path $destination_dir))
{
New-Item $destination_dir -ItemType Directory
}
Write-Host "同期します" $source_dir $destination_dir
# 保存元と保存先で同期処理
. robocopy $source_dir $destination_dir /MIR /XD '*.lnk'
Write-Host 何かキーを押してください。 -NoNewLine
[Console]::ReadKey() | Out-Null
使い方
$destination_rootが保存先のルートディレクトリになりますので環境に合わせて変更する必要があります。またルートディレクトリはあらかじめ作成する必要があります。
スクリプトをパスが通ったディレクトリに適当な名前で保存します。
同期させたい任意のディレクトリに移動しスクリプトを実行すると同期処理が実行されます。
コメント