0

最好使用 Powershell,否则使用 vbscript。perl 或批处理。(无论如何,这不是一项手工工作)。

我有一个用户配置文件列表:

\\fileserver\profiles\user1\findmedirectory\dir1
\\fileserver\profiles\user2\findmedirectory\dir1
\\fileserver\profiles\user3\notfindme\dir1

我希望将“findmedirectory”的所有实例递归复制到

\\fileserver\newprofilesdirectory\user1\
\\fileserver\newprofilesdirectory\user2\
\\fileserver\newprofilesdirectory\user3\

例如,通过查找第一个条目:

\\fileserver\profiles\user1\appdata\findmedirectory\dir1
`$dest = \\fileserver\newprofiledirectory
$user = user1 (from result above)
$copydir = findmedirectory

$complete_dest = $dest & $user & $copydir (i.e. 
\\fileserver\newprofiledirectory\user1\findmedirectory )
`

在 user1、user2 和 user3 下的两个位置显然还有其他文件。

到目前为止,我有: get-childitem "\\fileserver\profiles" -filter "findmedirectory" -force -recurse | where-object {$_.PSIsContainer} | select-object fullname

这有效^^。

当我尝试通过管道获取“用户名”字符串时,即 user1。它开始分崩离析:

$files = Get-ChildItem "\\fileserver\profiles" -Filter "*findmedirectory*" -force -recurse | Where-Object {$_.PSIsContainer} | select-object fullname
foreach ($file in $files) { get-item $files.fullname).parent.name }

请帮忙。

4

2 回答 2

0

如果我正确理解了你的问题,这样的事情应该可以工作:

$oldprofiles = '\\fileserver\profiles'
$newprofiles = '\\fileserver\newprofilesdirectory'

Get-ChildItem $oldprofiles -Filter "*findmedirectory*" -Recurse -Force | ? {
  $_.PSIsContainer
} | % {
  Copy-Item $_.FullName (Join-Path $newprofile $_.Parent.Name) -Recurse -Force
}
于 2013-07-11T10:12:19.753 回答
0

这应该有效:

$specialdirectory = "xyz"
$Destination = "zyx"

$1 = "\\fileserver\profiles\" | Get-ChildItem
$User = $1.Name | where {$_ -Match "User"}
$User | foreach {
$check = test-path -pathtype Any "\\fileserver\profiles\$_\appdata\$Specialdirectory"
If ($check -eq $true) {Copy-Item \\fileserver\profiles\$_\appdata\$specialdirectory -Destination C:\$Destination -Recurse}
        }
于 2013-07-11T10:02:03.867 回答