如何使用PowerShell重命名具有多个数组的文件?

问题描述

您好,我需要重命名具有多个数组的文件。 我的原始文件夹中有很多这种格式的文件。 这是示例文件

20200909071608_11WWR3DT601_AE.job
20200909071608_11WWR3DT601_S1.job

我需要将该文件夹中的某些文件复制到我在下面初始化的文件名。

  1. 我有这种格式的xml文件

  2. 我需要映射crm和每个crm的优先级值。

  3. 映射后,我需要使用从xml文件获取的一些信息来重命名复制的文件

  4. 我尝试过此操作,它可以复制文件,然后重命名,但是重命名文件是重复的。

任何人都可以帮助我。谢谢。

$PathOperationalJob = "D:\Process"
$PathOriginalJob = "D:\Initial"

$SWPOfile = @("11WWR3DT601_AE","11WWR3DT601_S1")
$CRM = @("AE","S1")
$SSID = "8537"
$JobSequenceAgent = "D:\Service\Sequence.XML"
[System.Xml.XmlDocument] $JobSequence = New-Object System.Xml.XmlDocument
$JobSequenceFilePath = Resolve-Path ($JobSequenceAgent) -ErrorAction Stop
$JobSequence.Load($JobSequenceFilePath)
$Date = (Get-Date).ToUniversalTime().ToString('yyyyMMddHHmmss')
# Mapping SSID
foreach ($c in $CRM)
{

     $QuerySSID =  $JobSequence.assign.define.systemid | Where-Object {$_.value -like "*$SSID*"} |
     Select-Object -ExpandProperty description | Where-Object {$_.crm -like "*$c*"} | Select-Object -ExpandProperty priority
     Write-Host "priority: $c $QuerySSID"

     copy-Item -Path $PathOriginalJob\*$SWPOfile*.job $PathOperationalJob\11WWR3DT601 -ErrorAction Stop
     $SWPOfile | ForEach-Object {
          copy-Item -Path $PathOriginalJob\*$_*.job $PathOperationalJob\18WWR3DT601 -ErrorAction Stop
          $GetAddJob = Get-ChildItem -Path $PathOperationalJob\11WWR3DT601\*$_*.job | 
          Rename-Item -NewName {"$QuerySSID`_$Date`_" + $_.Name.Replace('.job','.que')}
     }
    
}

解决方法

T-Me是正确的,您不能将数组放在这样的通配符中。它不会展开数组并复制文件名中带有这些字符串的文件。您应该这样将它放在ForEach循环中:

Rename-Item

这也使您避免不必使用复制文件的class DemoApp(MDApp): def _press(self,*dt): print(self.root.get_screen("scr2").ids.hasta.text) def _doThis(self,*dt): print(self.root.get_screen("scr2").ids.hasta.text) 命令。