我正在创建一个脚本来执行以下任务:
请参阅我的代码:
$input = "U:\PS\Input"
$TempZip = "U:\PS\ExtractedZip"
$dest = "U:\PS\Output"
$filelist = Get-ChildItem $input -Filter "*.Zip" -Recurse |
Where-Object{$_.LastWriteTime -eq (Get-Date).AddDays(1)}
$shell_app = New-Object -Com Shell.Application
foreach ($file in $filelist) {
$zip_file = $shell_app.NameSpace($file.FullName)
foreach ($item in $zip_file.Items()) {
$shell_app.NameSpace($TempZip).CopyHere($item)
}
Get-ChildItem -Path $TempZip -Filter "*.dat" -Recurse |
Rename-Item -NewName {[IO.Path]::ChangeExtension($_.Name, "txt")} -PassThru |
Move-Item -Path "$TempZip\*.txt" -Destination "$dest\MM_YYYY\DD_MM_YYYY\Retail"
}
注意:MM_YYYY
:当前月份和年份,例如August_2017
。 DD_MM_YYYY
:当前日期,例如23_08_2017
。
例如:\August_2017\23_08_2017\Retail
第二天将是:\August_2017\24_08_2017\Retail
我遇到了第4任务,并想知道PowerShell可以将一堆文件移动到每日创建文件夹中(每天以\August_2017\23_08_2017\Retail
格式创建一个新文件夹,第二天将{{1} })?
答案 0 :(得分:1)
使用installation:
从当前日期构建目标路径$dest = "U:\PS\Output\{0:MMMM_yyyy}\{0:dd_MM_yyyy}\Retail" -f (Get-Date)
然后像这样移动文件:
Get-ChildItem -Path $TempZip -Filter "*.dat" -Recurse |
Move-Item -Destination { Join-Path $dest ($_.BaseName + '.txt') }
您可以在移动时重命名文件,无需先使用Rename-Item
。