2012-04-23 6 views
0

Powershell内ファイルグループのファイル名を変更して、同様のファイルの最新バージョンをそのディレクトリにコピーするプロセスを自動化したいと思います。Powershell Script Filename Increment

  1. このバックアップディレクトリ

    (newestfile.txt) --> (file1.bak) 
    
  2. に別のディレクトリからバックアップディレクトリ内のファイルの

    (file1.bak) --> (file2.bak) 
        (file2.bak) --> (file3.bak) 
    
  3. コピーの最新バージョンを現在のファイルの最も古い

    (file3.bak) --> none 
    
  4. 増加のファイル名を削除します。

これは私の知る限り得ていると立ち往生していますようです。このような

$path = "c:\temp" 
cd $path 

$count = (get-childitem $path -name).count 
Write-Host "Number of Files: $count" 

$items = Get-ChildItem | Sort Extension -desc | Rename-Item -NewName {"gapr.ear.rollback$count"} 

$items | Sort Extension -desc | ForEach-Object -begin { $count= (get-childitem $path -name).count } -process { rename-item $_ -NewName "gappr.ear.rollback$count"; $count-- } 

答えて

1

すべての方に感謝します。あなたの助けがありがたいです


#Directory to complete script in 
$path = "c:\temp" 
cd $path 

#Writes out number of files in directory to console 
$count = (get-childitem $path -name).count 
Write-Host "Number of Files: $count" 

#Sorts items by decsending order 
$items = Get-ChildItem | Sort Extension -desc 

#Deletes oldest file by file extension number 
del $items[0] 

#Copy file from original directory to backup directory 
Copy-Item c:\temp2\* c:\temp 

#Sorts items by decsending order 
$items = Get-ChildItem | Sort Extension -desc 

#Renames files in quotes after NewName argument 
$items | ForEach-Object -begin { $count= (get-childitem $path -name).count } -process { rename-item $_ -NewName "file.bak$count"; $count-- } 
1

何か?本当のことをするためには何が必要なのでしょうか?

$files = @(gci *.bak | sort @{e={$_.LastWriteTime}; asc=$true}) 

if ($files) 
{ 
    del $files[0] -Whatif 
    for ($i = 1; $i -lt $files.Count; ++$i) 
    { ren $files[$i] $files[$i - 1] -Whatif } 
} 
+0

しかし、並べ替えは不要です。 'Sort-Object LastWriteTime'は同じことをします(わかりやすくするためにスクリプト内のコマンド全体を書く傾向があります)。 –