如果存在文件,则在另一个文件夹中移动另一个文件

时间:2015-09-23 12:25:08

标签: powershell batch-file

在特定文件夹中我有使用随机名称创建的文件,例如:

file1.xml file2.xml

成功创建这些文件后,将创建一个.ack文件。

所以我会

file1.xml file1.ack file2.xml file2.ack

我必须做的事情:

  • 仅在创建相应的.ack 时移动.xml文件。

困难的部分:文件名是随机的,我无法控制它们。

有没有办法创建一个.bat或PowerShell来检查和移动这些要求在预定的时间运行?

非常感谢你的帮助

2 个答案:

答案 0 :(得分:0)

确实,理想将是一个PowerShell任务。现在,您需要利用窗口的计划任务,以便在预定时间运行它。

简而言之,您与powershell的关系是

  • 使用Get-ChildItem -filter "*.xml"
  • 列出文件夹中的xml文件
  • 将其传输到Where-Object语句,以确保.xml具有.ack对应项,利用Test-Path
  • 对于每个生产的项目,移动.xml文件。

    Move-Item -Path $source -Destination $target

或者,您也可以使用Remove-Item清除.ack文件。

答案 1 :(得分:0)

查找带有两个扩展名的所有文件名,并将它们都移动。

gci | group basename |? Count -eq 2 | select -expand group | move -Dest c:\temp

因为不使用任何循环很有趣。如果你想要循环,可能:移动XML并删除.ack。

gci *.ack |% { move ($_.BaseName +'.xml') "c:\temp" ; rm $_ }