2017-01-14 13 views
2

私はCのファイルを再編成するスクリプトがあります:に\年\月\「StoreFilesと」「C:\ストア\日付\」。変更日に基づいてStoreFilesとの」パスを変数として使用してPowerShellを使用してファイルを整理しますか?

#Variables 
$StoreName = "aStore" 
$SourceDir = "C:\Source" 
$TargetDir = "C:\$StoreName" 

# Create Folder based on Store List 
if(-Not (Test-Path -Path $TargetDir)) { 
    New-Item -ItemType Directory -Path $TargetDir 
} 

# Search & create folders based on date 
Get-ChildItem "$SourceDir\*$StoreName*" -Recurse | ForEach-Object { 
    $x = $_.LastWriteTime.ToShortDateString() 
    $new_folder_name = Get-Date $x -Format MMM-yyyy 
    $des_path = "$TargetDir\$new_folder_name" 

    if (Test-Path $des_path) { 
     Copy-Item $_.FullName $des_path 
    } else { 
     New-Item -ItemType Directory -Path $des_path 
     Copy-Item $_.FullName $des_path 
    } 
} 

は素晴らしいしかし、更新日時作品C:\ Year \ Month \ "StoreFiles"の元のフォルダパスを使用して新しい出力の日付として使用できますか?たぶん私は割り当てる必要があります\ストア\月 - 年\「StoreFilesと 『

: 「C:\年\月\」StoreFilesと』を」C意味で

は、私は次の操作を実行しようとしていますフォルダパスを変数として使用し、それに従って新しい出力に使用しますか?

これを行うには、別の方法がありますか?

答えて

0

この

$dirroot="C:\temp\Root" 
$store="C:\store" 

Get-ChildItem $dirroot -file -Recurse | 
    where FullName -match ([Regex]::Escape($dirroot) + "\\\d{4}\\\d{1,2}\\" + [Regex]::Escape($_.Name)) | 
    % { 
     $elements=$_.FullName.Replace($dirroot, '').Split('\') 
     New-Item -ItemType Directory -Path "$store\$($elements[2])-$($elements[1])" -Force 
     Copy-Item $_.FullName "$store\$($elements[2])-$($elements[1])\$($elements[3])" 
     } 
+0

これはうまくいくかもしれませんが、これはうまくいくでしょう。フォルダ構造 "C:¥Test v2¥_SOURCE¥2016¥01-Jan¥Bill Payment Stubs¥FILES"の例 "2016と01-Janのフォルダ部分を取りたいだけです。 –

0

あなたはこのようなものを使用望めないような何かを試してみてください?

$ DateInfo = '' |選択オブジェクト - プロパティ 'Year'、 'Month'

$File = 'c:\2014\may\filename.txt' 
$TopFolderpath = [io.Path]::GetDirectoryName($File) 
$TopFolderName = [io.Path]::GetFileName($TopFolderpath) 
$DateInfo.Month = $TopFolderName 
$Subfolderpath = [io.Path]::GetDirectoryName($TopFolderpath) 
$SubFolderName = [io.Path]::GetFileName($Subfolderpath) 
$DateInfo.Year = $SubFolderName 

$DateInfo 
+0

これは、ファイルの作成日や修正日時が反映されないためです。経理部門は通常、1か2つ後に請求書をフォルダ構造に追加します。これは、フォルダ構造が正確な日付情報を持つことを意味します。 –

関連する問題