最好使用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
}
请帮忙。
答案 0 :(得分: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}
}
答案 1 :(得分: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
}