powershell - 使用格式获取创建日期
问题描述
我想遍历图像并将每个图像移动到创建日期的文件夹中,但我似乎没有看到关于如何格式化生成的日期时间字符串以及 ChildItem 如何工作的要点......
我打算创建一个包含创建日期“2017-03-06”的正确格式字符串的变量,以便我可以创建一个具有该名称的目录并将文件移动到那里。这将发生在循环(for
,,foreach
...)内。
$files = Get-ChildItem "P:\photos\"
for ($i=0; $i -lt $files.Count; $i++) {
$outfile = $files[$i].FullName
Write-Host "file: " $outfile
$CreationDateStr = Get-ChildItem $files[$i].CreationTime |
Get-Date -f "yyyy-MM-dd"
Write-Host "file creation time: " $CreationDateStr
}
Read-Host -Prompt "Press Enter to exit"
这不起作用,并且代码不正确:
Get-ChildItem : 未找到光盘。不是名称为“03/06/2017 07”的光盘
这有效,但需要格式化:
$files[$i].CreationTime
文件创建时间:06.03.2017 07:53:21
解决方案
我们不推荐Write-Host
,因为您无法重定向它。
这就是我认为您正在寻找的内容:
Get-ChildItem "P:\Photos" | ForEach-Object {
$dirName = "{0:yyyy-MM-dd}" -f $_.CreationTime
if ( -not (Test-Path $dirName -PathType Container) ) {
[Void] (New-Item $dirName -ItemType Directory)
}
Move-Item $_ $dirName -WhatIf
}
所以在循环中,我们检查指定的目录是否不存在(如果不存在则创建它),然后将文件移动到新目录。-WhatIf
如果代码执行您想要的操作,请删除。
推荐阅读
- reactjs - 反应中的钩子没有正确更新我的状态
- facebook - Facebook Graph API 是否可以从提要中检索广告?
- flutter - 按 Tab 转到下一个 TextField 会在该 TextField 上添加 /t
- java - 从另一个构造函数调用构造函数 init,其参数中包含共享对象
- android - 使用 Tensorflow 在静态图像中进行对象检测
- modelmapper - ModelMapper 无法将 java.lang.String 转换为 java.lang.Long
- image - pdf图像位置和缩放
- python - 使用 Python 查询 Athena 的长时间延迟
- winforms - PowerShell WinForm:如果选中一个或多个复选框,则启用按钮,否则禁用按钮
- c# - 在 ASP.NET Core WebAPI 中获取 OData 计数