2012-04-23 46 views
0

在Powershell中,我想自動執行更改一組文件的文件名並將最新版本的類似文件複製到該目錄的過程。Powershell腳本文件名增量

  1. 從另一個目錄中刪除當前文件的最古老的

    (file3.bak) --> none 
    
  2. 增加文件名的備份目錄

    (file1.bak) --> (file2.bak) 
        (file2.bak) --> (file3.bak) 
    
  3. 複製最新版本的文件到這個備份目錄

    (newestfile.txt) --> (file1.bak) 
    

這是據我已經變得和我堅持:

$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

像這樣的事情?刪除' - Wtif的做真正的事情。

$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'做同樣的事情(爲了更好的可讀性,我總是在腳本中編寫整個命令)。 – 2012-04-24 08:29:20

相關問題