【问题标题】:Transfering files based on their names using power shell使用 powershell 根据名称传输文件
【发布时间】:2018-08-28 05:48:09
【问题描述】:

就名称而言,我们的源位置有两种类型的文件可供使用。第一个以DM_psedocharge_<curentdate in YYYYMMDD format>.csv 开头,另一个以Monthly_Extract_<curentdate in YYYYMMDD format>.csv 开头。

现在要求规定第一个文件应传输到目标文件夹C:\DMRelated,第二个文件将移动到C:\MonthlyExtract 文件夹。这两种情况的源文件夹都很常见。

我尝试根据 if 条件中的 reg es 表达式捕获正确的文件。如果条件数学 "^DM_" 然后移动到 C:\DMRelated 否则移动到 C:\MonthlyExtract。但是我选择的表达方式似乎不对。有人可以帮我吗?我是编写 Power Shell 脚本的新手。

【问题讨论】:

  • 嗨 Nilanjan,请提供示例代码和错误消息/有关您的代码的不当行为的详细信息。
  • 没有错误但是不满足匹配模式的条件。例如,我使用了 $source = "E:\welcom\SHOP\DEVIBM\Data\Exports\MovementUpdateToDebtManager\Out" $destination = "E:\Nianjan" if(-not (Test-Path $destination)) { mkdir $目的地 | out-null} $pattern = "(^DM_*)" foreach ($i in Get-ChildItem -Path $source -Recurse) { if (($i.Name -notmatch $pattern) -and (-not $i. PsIsContainer)) { Write-Host "Test" continue; } Copy-Item -Path $i.FullName -Destination $i.FullName.Replace($source,$destination).Trim($i.Name) }

标签: regex file powershell transfer


【解决方案1】:

由于您一直在寻找当前日期,因此您不需要模式匹配 - 您已经知道文件的确切名称!

Set-Location "C:\source\location"
Move-Item "DM_psedocharge_$(Get-Date -Format yyyyMMdd).csv" -Destination C:\DMRelated
Move-Item "Monthly_extract_$(Get-Date -Format yyyyMMdd).csv" -Destination C:\MonthlyExtract

在上面的示例中,我们使用Get-Date cmdlet(默认为当前日期和时间)和-Format 参数来获取格式为yyyyMMdd 的格式化日期字符串

【讨论】:

  • 感谢 Mathias 的回复。但是将来可能会出现这种情况,以 DM_psedocharge.. 开头的文件可能会动态包含其他模式作为其文件名的一部分。比如附加协议号。然后名称可能会变成 DM_pseodocharge_1233_。这就是为什么我期待reg ex。起始前缀肯定不会改变。
  • 您仍然不需要正则表达式 - 简单的通配符通配符就足够了:"DM_psedocharge*_$(Get-Date -Format yyyyMMdd).csv"(注意 *
  • Mathias,感谢您的及时回复。这是真的,但是如果日期格式从 yyyyMMdd 更改为 yyyyMMddHHmmss 会怎样。我们无法控制文件生成的 HHmmss 部分。我的意思是我们无法预测 -Format 上的 HHmmss,因为文件已经生成。所述问题可以通过正则表达式解决。我相信我们会想出更好的主意..
  • @NilanjanSaha 仍然不需要正则表达式:"DM_psedocharge*_$(Get-Date -Format yyyyMMdd)*.csv"
  • 非常抱歉,我回复晚了。 @Mathias -> 是的,它正在工作!谢谢。 Guenther:感谢您的回复,是的,日期部分和下划线是强制性的。 Mathias 建议的技巧正在实现我的目的。
猜你喜欢
  • 2017-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多