Windowsでプロジェクトアーカイブの完全なフォルダ名とファイル名を復元する
バックグラウンド
プロジェクト アーカイブ ツールを使用してプロジェクト アーカイブを抽出すると、長いファイル パスと入れ子になったサブフォルダー構造の問題が、Windows 標準のパス制限である 260 文字を超える可能性がある場合があります。アーカイブ ファイルの破損や抽出エラーを防ぐために、プロジェクト アーカイブ ツールは抽出中にフォルダ名とファイル名を自動的に切り捨てます。
抽出後に完全なフォルダ名とファイル名を復元できるように、Procore には CSV パス マッピング ファイル (path-map.csv) が含まれています抽出されたアーカイブフォルダ内。このファイルには、切り捨てられた各名前と、それに対応するフルネームがリストされます。CSV ファイルを標準の PowerShell スクリプトと共に使用すると、すべての完全な案件名をすばやく復元できます。
考慮すべきこと
-
追加情報:
-
抽出されていない
ZIP ファイルアーカイブファイル。 -
ファイル ロック エラーを防ぐために、PowerShell スクリプトを実行する前に、抽出されたアーカイブ フォルダー内にある開いているファイルまたはドキュメントをすべて閉じます。
-
PowerShell スクリプトを複数回実行することは、特定のフォルダー名またはファイル名が既に部分的に復元されている場合に安全です。
-
前提 条件
抽出したアーカイブフォルダを開きます
-
ダウンロードした ZIP ファイルを解凍します
.zipアーカイブファイル。 -
ファイルエクスプローラーで解凍したアーカイブフォルダーを開きます。
-
path-map.csvファイルがアーカイブ フォルダーに存在することを確認します。
メモ: この CSV ファイルには、Type、ShortenedName、OriginalNameの 3 つの列が含まれています。
抽出したアーカイブ フォルダーで PowerShell を開きます
重要
抽出されたアーカイブ フォルダー パス内で PowerShell を開く必要があります。別の場所から開いた場合、PowerShell スクリプトはpath-map.csvやファイルを見つけられません。次のいずれかの方法を選択します。
オプション A: アドレス バー (推奨)
-
Windowsシステムで、 ファイルエクスプローラーを開きます。
-
エクスプローラーで、抽出したアーカイブ フォルダーに移動して、
path-map.csvファイルが表示されるようにします。 -
ウィンドウ上部の「アドレスバー」の空の面積(ファイルパスがリストされている場所)をクリックします。
-
powershellと入力し、Enter キーを押します。
Windows PowerShell ウィンドウが開き、抽出したアーカイブ フォルダーのパスが表示されます。
オプション B: コンテキスト メニュー
-
Windowsシステムで、 ファイルエクスプローラーを開きます。
-
抽出したフォルダーを ファイルエクスプローラーで開きます。
-
Shiftキーを押したまま、フォルダウィンドウ内の空の面積を右クリックします。
-
[ここで PowerShell ウィンドウを開く] を選択します (Windows 11 では、[ターミナルで開く] を選択します)。
ディレクトリを確認する
PowerShell ウィンドウで「 dir 」と入力し、 Enter キーを押します。
-
path-map.csvが出力にリストされている場合は、正しいディレクトリにいます。 -
path-map.csvが表示されない場合は、次のコマンドを入力してフォルダに移動します (パスを実際のディレクトリ パスに置き換えてください)。-
cd "C:\full\path\to\your-extracted-folder"
-
PowerShell スクリプトを実行する
-
以下のスクリプト ブロックをコピーします。
-
# 抽出したフォルダ(path-map.csvを含むフォルダ)内から実行
$map = Import-csv ".\path-map.csv"
#最初にフォルダの名前を変更します(親の名前変更が子パスを壊さないように、最も深い一致が最初にあります)
$map |Where-Object { $_.「-eq 'Folder' }」と入力します。 |ForEach-オブジェクト {
$short = $_ です。短縮名;$orig = $_ です。オリジナル名
Get-Child案件 -ディレクトリ -再帰 |
Where-Object { $_.名前 -eq $short } |
ソートオブジェクト { $_.FullName.Length } -降順 |
ForEach-Object { Rename-案件 -LiteralPath $_.フルネーム -NewName $orig }
}
#次に、ファイルの名前を変更します
$map |Where-Object { $_.「-eq 'File' } |ForEach-オブジェクト {
$short = $_ です。短縮名;$orig = $_ です。オリジナル名
Get-Child案件 -ファイル -再帰 |
Where-Object { $_.名前 -eq $short } |
ForEach-Object { Rename-案件 -LiteralPath $_.フルネーム -NewName $orig }
}
-
-
アクティブな PowerShell ウィンドウにコードを貼り付け、 Enter キーを押します。
-
実行が終了すると、抽出されたアーカイブフォルダ内のすべてのフォルダとファイルにフルネームが表示されます。

