我想在特定的源文件夹中搜索字符串。 如果我找到具有该名称的.xml文件,我想将该文件复制到特定的目标目录中。 这就是我到目前为止所做的:
$SourceDirectory = "D:\MessageQueue_Backup\DPGIN_Backup\ETIMS"
$DestinationDirectory = "C:\Destination"
$orderNumberArray = "1F-16CG-2-94JG-60-2.R6C3.20864",
"1F-16CG-2-28JG-10-2.R3C4.21488",
"1F-16CJ-2-75JG-00-21.R4C2.21487",
"1F-16CG-2-70JG-10-41.R5C3.21586",
"1F-16CG-2-32JG-90-1.R2C2.22733",
"1F-16CG-2-33JG-00-1.R5C4.23044",
"1F-16CG-2-80JG-10-11.R5C4.22660",
"1F-16CG-2-94JG-10-2.R7C3.23046",
"1F-16CG-2-94JG-60-6.R10C7.23031",
"1F-16CJ-2-24JG-30-1.R3C1.23036",
"1F-16CJ-2-28JG-40-1.R4C3.22737",
"1F-16CJ-2-32JG-40-1.R7C3.22728",
"1F-16CJ-2-32JG-90-1.R2C2.22734",
"1F-16CJ-6-11.R14C5.24295",
"1F-16CJ-2-34JG-50-1.R6C7.2,5266"
foreach ($element in $orderNumberArray)
{
If (Get-ChildItem $_.FullName | Select-String -Pattern $element)
{
Copy-Item $file.FullName -Destination $DestinationDirectory
}
}
我的问题是,我不知道如何搜索SourceDirectory
:(
顺便说一下,SourceFolder中只有xml文件
答案 0 :(得分:1)
这可能有效
$SourceDirectory = 'D:\MessageQueue_Backup\DPGIN_Backup\ETIMS\*'
$DestinationDirectory = "C:\Destination"
$orderNumberArray = @(
"*1F-16CG-2-94JG-60-2.R6C3.20864*",
"*1F-16CG-2-28JG-10-2.R3C4.21488*",
"*1F-16CJ-2-75JG-00-21.R4C2.21487*",
"*1F-16CG-2-70JG-10-41.R5C3.21586*",
"*1F-16CG-2-32JG-90-1.R2C2.22733*",
"*1F-16CG-2-33JG-00-1.R5C4.23044*",
"*1F-16CG-2-80JG-10-11.R5C4.22660*",
"*1F-16CG-2-94JG-10-2.R7C3.23046*",
"*1F-16CG-2-94JG-60-6.R10C7.23031*",
"*1F-16CJ-2-24JG-30-1.R3C1.23036*",
"*1F-16CJ-2-28JG-40-1.R4C3.22737*",
"*1F-16CJ-2-32JG-40-1.R7C3.22728*",
"*1F-16CJ-2-32JG-90-1.R2C2.22734*",
"*1F-16CJ-6-11.R14C5.24295*",
"*1F-16CJ-2-34JG-50-1.R6C7.2,5266*"
)
dir $SourceDirectory -Include $orderNumberArray | % {copy $_.fullname $destinationdirectory}
答案 1 :(得分:1)
尝试这样的事情
$Include = @('1F-16CG-2', '1F-16CG-2')
gci -Path D:\MessageQueue_Backup\DPGIN_Backup\ETIMS | ForEach-Object ($_) {
for($i = 0; $i -lt $Include.Count; $i++){
if($_.Name.StartsWith($Include[$i])){
Write-Warning $_.Name
}
}
}
答案 2 :(得分:1)
这样的事情应该有效:
$sourceDirectory = "D:\MessageQueue_Backup\DPGIN_Backup\ETIMS"
$destinationDirectory = "C:\Destination"
$orderNumbers = "1F-16CG-2-94JG-60-2.R6C3.20864",
"1F-16CG-2-28JG-10-2.R3C4.21488",
"1F-16CJ-2-75JG-00-21.R4C2.21487",
"1F-16CG-2-70JG-10-41.R5C3.21586",
"1F-16CG-2-32JG-90-1.R2C2.22733",
"1F-16CG-2-33JG-00-1.R5C4.23044",
"1F-16CG-2-80JG-10-11.R5C4.22660",
"1F-16CG-2-94JG-10-2.R7C3.23046",
"1F-16CG-2-94JG-60-6.R10C7.23031",
"1F-16CJ-2-24JG-30-1.R3C1.23036",
"1F-16CJ-2-28JG-40-1.R4C3.22737",
"1F-16CJ-2-32JG-40-1.R7C3.22728",
"1F-16CJ-2-32JG-90-1.R2C2.22734",
"1F-16CJ-6-11.R14C5.24295",
"1F-16CJ-2-34JG-50-1.R6C7.2,5266"
Get-ChildItem $sourceDirectory -Filter *.xml | Where-Object {
$basename = $_.BaseName
$orderNumbers | Where-Object { $basename -like "*$_" }
} | Copy-Item -Destination $destinationDirectory
过滤器检查每个文件的基本名称(没有扩展名的文件名)是否以任何订单号(-like "*$_"
)结尾。