powershell - 根据内容移动 .csv 文件
问题描述
我想搜索 .csv 文件的文件夹并选择那些包含早于某个日期的日期值的文件。一旦我有了文件,我只想将它们移动到另一个文件夹位置。我已经尝试过了,但得到错误“移动项目:输入对象不能绑定到命令的任何参数,因为命令不接受管道输入,或者......”
$Date = (Get-Date).AddDays(-60).Date
$CsvFiles = Get-ChildItem -Path "D:\IMPORT" -Filter *.csv
foreach ($csv in $CsvFiles){
$group = Import-Csv -Path $CsvFiles.FullName |
Where-Object {$_."Received Date" -as [datetime] -lt $Date} |
Sort-Object 'Order ID' -Unique |
forEach-Object {
$_.Group | Move-Item -Path $csv.FullName -Destination D:\EXPORT\$($csv.Name) -Force}}
该代码正在处理文件的移动。我认为 Move-Item 不需要 -Path 因为它应该已经存在于管道中。但是,不提供路径会导致 Path Null 错误。
非常感谢任何帮助。
解决方案
除非我不明白您要做什么,否则应该可以。如果脚本正在执行您期望的操作,请
移除-WhatIf
开关:Move-Item
$Date = (Get-Date).AddDays(-60).Date
$CsvFiles = Get-ChildItem -Path "D:\IMPORT" -Filter *.csv
$toMove = foreach($csv in $CsvFiles)
{
$shouldMove = Import-Csv -Path $csv.FullName |
Where-Object {
$_.'Received Date' -as [datetime] -lt $Date
} | Select-Object -First 1
if($shouldMove)
{
$csv.FullName
}
}
Move-Item -Path $toMove -Destination D:\EXPORT\ -Force -WhatIf
推荐阅读
- elasticsearch - Elasticsearch:嵌套查询构建器内的 must not 子句不构建内部命中
- javascript - 如何获得在数组中出现最多的前五个元素?
- database - MongoDB 与 ElasticSearch 分面搜索导航用例
- keystonejs - Keystone 5 自定义输入验证
- c# - 实时数据的 C# websocket 流控制
- python - 使用 @property 装饰器和 dunder 方法
- powerbi - Power bi 工作流数据仓库设计
- esp8266 - 使用 nodemcu esp8266 将多变量发送到 ubidots?
- python - python:访问装饰函数的返回值
- r - 基于R中的公共列连接两个数据框