ここに行きます。あなたは上記に貼り付けるでしょう
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を使用し慣れていないため、私はあなたの読書のためのより多くの手続きのスタイルで書くことにしましたあなたの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日を逃し、2日以上のファイルを一緒に処理すると、これらのファイルには毎日のフォルダがあり、より一貫性があります。 まずrootfolder内のすべてのファイルを取得:
日は、静的なのだろうか、それは常に一日になります(マイナス1)スクリプトが実行されていることを助ける
希望? – EBGreen