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

これは機能します^^。

パイプして「username」の文字列、つまり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 に答える