Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 在文件夹中搜索文件名并将项目复制到其他位置_Powershell - Fatal编程技术网

Powershell 在文件夹中搜索文件名并将项目复制到其他位置

Powershell 在文件夹中搜索文件名并将项目复制到其他位置,powershell,Powershell,您好,在我们的环境中,我们有以下结构: \\server\share1\Subfolder1\Subfolder3\123456.jpg \\server\share1\Subfolder2\Subfolder4\456789.jpg \\server\share2\123456.tif \\server\share2\456789.tif 我想做的是:检查该项目是否以tif形式存在于share2中。如果是这样,那么我想将tif文件复制到与jpg(share1)相同的位置 通过getchild

您好,在我们的环境中,我们有以下结构:

\\server\share1\Subfolder1\Subfolder3\123456.jpg
\\server\share1\Subfolder2\Subfolder4\456789.jpg
\\server\share2\123456.tif
\\server\share2\456789.tif
我想做的是:检查该项目是否以tif形式存在于share2中。如果是这样,那么我想将tif文件复制到与jpg(share1)相同的位置

通过
getchilditem-Recurse-File
我可以获取所有文件,但我不知道如何将文件名与share2进行比较,并将tif文件复制到与jpg相同的位置


提前谢谢

这应该满足您的需要:

$JpgFiles = Get-ChildItem .\Share1 -Recurse -File -Filter *.jpg

ForEach ($File in $JpgFiles) {
    $TifFile = Get-ChildItem .\Share2 -Recurse -File -Filter *.tif | Where { $_.BaseName -eq $File.BaseName }

    If ($TifFile) { Copy-Item -Path $TifFile.FullName -Destination $File.DirectoryName }
}
  • 获取Share1中的所有.jpg文件
  • 遍历每个文件,并将
    .basename
    属性与Share2中的文件进行比较(basename是不带扩展名的文件名)
  • 如果返回文件,则将该文件复制到share1

这应该满足您的需要:

$JpgFiles = Get-ChildItem .\Share1 -Recurse -File -Filter *.jpg

ForEach ($File in $JpgFiles) {
    $TifFile = Get-ChildItem .\Share2 -Recurse -File -Filter *.tif | Where { $_.BaseName -eq $File.BaseName }

    If ($TifFile) { Copy-Item -Path $TifFile.FullName -Destination $File.DirectoryName }
}
  • 获取Share1中的所有.jpg文件
  • 遍历每个文件,并将
    .basename
    属性与Share2中的文件进行比较(basename是不带扩展名的文件名)
  • 如果返回文件,则将该文件复制到share1

移动项目应为复制项目以满足OP要求:),但Share1包含子文件夹。因此,我可以添加选项“-Recurse”来包含子文件夹,这很有效。但它不会将tif文件从share2复制到与share1中的jpg相同的位置。上述修改会将.tif文件放在jpg文件现在所在的任何子文件夹中。Move-Item应为copy Item以满足OP要求:),但share1包含子文件夹。因此,我可以添加选项“-Recurse”来包含子文件夹,这很有效。但它不会将tif文件从share2复制到与share1中jpg相同的位置。上面的修改会将.tif文件放在jpg文件现在所在的任何子文件夹中。