Arrays Powershell基于名称在一个位置查找文件,而不是写入另一个位置
对于powershell,我是一个初学者,但最近我被要求为基础架构人员创建一个脚本 基本上,我有一个文本文件中的文件名列表。 这些文件存在于两个不同的位置,比如位置A和位置B。这些文件可能位于文件夹根目录中的不同子文件夹中 我需要做的是找到文本文件中列出的每个文件。 在位置a中搜索文件,然后在位置B中查找文件,很可能是不同的文件夹结构,然后在位置B中存在的文件与位置a中的文件所在的相同位置重写文件 我假设这需要通过一个数组来完成。我遇到的问题是在每个位置查找文件,然后重写相关的文件名 任何帮助都将不胜感激。我刚刚看到这个网站,并打算在将来更多地使用它 到目前为止,我的代码是:Arrays Powershell基于名称在一个位置查找文件,而不是写入另一个位置,arrays,file,powershell,find,move,Arrays,File,Powershell,Find,Move,对于powershell,我是一个初学者,但最近我被要求为基础架构人员创建一个脚本 基本上,我有一个文本文件中的文件名列表。 这些文件存在于两个不同的位置,比如位置A和位置B。这些文件可能位于文件夹根目录中的不同子文件夹中 我需要做的是找到文本文件中列出的每个文件。 在位置a中搜索文件,然后在位置B中查找文件,很可能是不同的文件夹结构,然后在位置B中存在的文件与位置a中的文件所在的相同位置重写文件 我假设这需要通过一个数组来完成。我遇到的问题是在每个位置查找文件,然后重写相关的文件名 任何帮助都
$FileList = 'C:\File_Names.txt'
$Src ='\\server\Temp'
$Dst ='\\server\Testing'
Foreach ($File in $FileList) {
Get-ChildItem $Src -Name -Recurse $File
}
在Get ChildItem$Src-Recurse-Include(Get Content$FileList)
的子树中搜索名称包含在文件$Src
中的任何文件($FileList
在叶(文件名)上操作)组件,并接受名称数组,这是默认情况下-Include
返回的内容)Get Content
在Get ChildItem$Dst-Recurse-Filter$\.Name
的子树中搜索同名文件($Dst
);请注意,在本例中使用了$\.Name
,这是出于性能原因而更可取的选择,但仅是具有单个名称/名称模式的选项-Filter
- 然后,
语句确保仅当目标子树中正好有1个文件匹配时才执行复制操作开关
- 在
调用中,访问源文件和目标文件的Copy Item
属性可确保文件被明确引用.FullName
$FileList = Get-Content 'C:\File_Names.txt'
$SrcDir ='\\server\Temp'
$DstDir ='\\server\Testing'
Foreach ($File in $FileList) {
$SrcFile = Get-ChildItem $SrcDir -Recurse $File -EA SilentlyContinue
$DstFile = Get-ChildItem $DstDir -Recurse $File -EA SilentlyContinue
if (($Srcfile.count -eq 1) -and ($DstFile.count -eq 1)){
Copy-Item $SrcFile $DstFile
} Else {
"More/less than one Source and/or Destination file $File"
}
}
$FileList = 'C:\File_Names.txt'
$Src ='\\server\Temp'
$Dst ='\\server\Testing'
Get-ChildItem $Src -Recurse -Include (Get-Content $FileList) | ForEachObject {
$destFile = Get-ChildItem $Dst -Recurse -Filter $_.Name
switch ($destFile.Count) {
0 { Write-Warning "No matching target file found for: $_"; break }
1 { Copy-Item $_.FullName $destFile.FullName }
default { Write-Warning "Multiple target files found for: $_" }
}
}