如何解决PowerShell - 按编辑日期排序和移动文件
简单的任务。却无法体会。 我只需要从一个目录 (x) 中获取文件并移动到另一个 (z) + 在那里创建名为“YYYY”(上次编辑的年份)的文件夹,然后创建名为“MM”(上次编辑的月份)的子文件夹。>
所以我找到了脚本并试图根据我的需要调整它。但是,我无法成功运行它。 这是我以代码女巫为例:
$files= Get-ChildItem -File «C:\Files\»
foreach ($file in $files) {
if ($file.lastwritetime -lt $lastweek) {
$file | Move-Item -Force -Destination { md («C:\Files\» + $_.LastWriteTime.ToString(«yyyy.MM») + «\» + $_.LastWriteTime.ToString(«yyyy.MM.dd»)) -Force}
}
}
所以我根据它制作了我的:
$files= Get-childitem -path "c:\Files"
$files | foreach-object {Move-Item -Force -Destination { md ("C:\Files\" + $_.LastWriteTime.ToString("yyyy")+"\"+$_.LastWriteTime.ToString("MM"))}}
请帮我让它工作! 我不太擅长使用 powershell...
解决方法
最好不要通过用 +
连接字符串来构造路径。为避免错误,请为此使用 Join-Path
cmdlet。
另外,我建议不要试图在一行代码中塞进那么多东西,因为当它失败时,真的很难调试。
试试
$path = 'C:\Files'
Get-childitem -Path $path -File |
ForEach-Object {
$destination = Join-Path -Path $path -ChildPath ('{0}\{1:D2}' -f $_.LastWriteTime.Year,$_.LastWriteTime.Month)
$null = New-Item -Path $destination -ItemType Directory -Force
$_ | Move-Item -Destination $destination
}
您可以通过像这样创建目标路径来缩短代码:$destination = Join-Path -Path $path -ChildPath ('{0:yyyy\\MM}' -f $_.LastWriteTime)
,但是您必须记住通过将 -f
格式模板字符串中的反斜杠加倍来转义它上>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。