在這裏,你去。它可以縮短了使用別名和管道和諸如此類的東西很多,但因爲你不熟悉使用PowerShell,我仍然決定在多個程序的風格來寫你的閱讀:
function MoveFilesAndRenameWithDate([string]$folderPrefix, [string]$filePattern) {
$files = Get-ChildItem .\* -include $filePattern
ForEach ($file in $files) {
$yesterDate = $file.CreationTime.AddDays(-1).ToString('yyyy-MM-dd')
$newSubFolderName = '{0}-{1}' -f $folderPrefix,$yesterDate
if (!(Test-Path $newSubFolderName)) {
mkdir $newSubFolderName
}
$newFileName = '{0}-{1}{2}' -f $file.BaseName,$yesterDate,$file.Extension
Move-Item $file (Join-Path $newSubFolderName $newFileName)
}
}
你會粘貼到上述您的Powershell會話(將其放置在您的配置文件中)。然後你調用這樣的函數:
MoveFilesAndRenameWithDate 'fooFolder' '*.xslx'
我傾向於使用更多的別名和管道比上述功能。我寫的第一個版本是這樣的,然後我分開的這部分,使其更容易理解到PowerShell的新人:
function MoveFilesAndRenameWithDate([string]$folderPrefix, [string]$filePattern) {
gci .\* -include $filePattern |
% { $date = $_.CreationTime.AddDays(-1).ToString('yyyy-MM-dd')
mkdir "$folderPrefix-$date" 2>$null
mv $_ (join-path $newSubFolderName ('{0}-{1}{2}' -f $_.BaseName,$date,$_.Extension))}
}
編輯:修改兩項功能,爲配合該日期,該文件創建日期的文件夾。我考慮製作一個臨時目錄,並從移動到它的文件中獲取單個日期,最後在循環之後重命名該目錄。但是,如果一天應該錯過並且兩天(或更多天)的文件一起處理,那麼每天仍然會有一個文件夾,這些文件更加一致。
該日期是靜態的還是始終是腳本運行的日期(減1)? – EBGreen