如何将一堆文件移动到每日创建文件夹



我正在创建一个脚本来执行以下任务:

  1. 根据当前日期查找所有 zip 文件
  2. 将 zip 文件解压缩到临时文件夹
  3. 将所有数据提取的文件扩展名从 dat 重命名为 txt
  4. 将所有重命名的.txt文件从"临时"文件夹移动到每日创建文件夹

请参阅我的代码:

$input = "U:PSInput"
$TempZip = "U:PSExtractedZip"
$dest = "U:PSOutput"
$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 "$destMM_YYYYDD_MM_YYYYRetail"
}

注:MM_YYYY:当前月份和年份,例如August_2017.DD_MM_YYYY:当前日期,例如23_08_2017.

例如:August_201723_08_2017Retail

第二天将是:August_201724_08_2017Retail

我被困在任务 4 上,想知道 PowerShell 是否可以将一堆文件移动到每日创建文件夹(每天以August_201723_08_2017Retail格式创建一个新文件夹,第二天会August_201724_08_2017Retail(?

使用格式运算符从当前日期构建目标路径:

$dest = "U:PSOutput{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

最新更新