Необходимо сравнить исходную директорию $source
с номером $dest
, чтобы увидеть, какие файлы .wav
находятся в исходном коде, но не являются целевыми. Я хочу скопировать те файлы, которые не попадают в цель в целевой И, в третий каталог $sharefolder
. Вот что я до сих пор. Оказывается, что copy-item
ставит все различия в строке один экземпляр:Powershell - Сравнить исходные и целевые каталоги для файлов .txt. Скопируйте все файлы, которые еще не нацелены на целевой И третий каталог
$sharefolder = '\\isilon1\blob\partial_dictation'
$comparefolder = '\\isilon1\blob\partial_dictation_compare'
$source = Get-childitem \\isilon1\blob\dcbld\pv -filter *.wav -recurse
$dest = Get-ChildItem \\isilon1\blob\Partial_Dictation_Compare -filter *.wav -recurse
$diff = Compare-Object $dest $source -passthru | Where-Object {$_.SideIndicator -EQ "=>"} | % {$_.FullName}
ForEach-Object {
Copy-Item "$diff" "$comparefolder" -WhatIf
Copy-Item "$diff" "$sharefolder" -WhatIf
}
Это то, что я получу, если я echo $diff ;
\\isilon1\blob\dcbld\pv\-D\CB\LD\-9\94\1.wav
\\isilon1\blob\dcbld\pv\-D\CB\LD\-9\94\2.wav
Это правильно, поскольку эти файлы не по назначению. При выполнении копирования элемент, он дает это:
Copy-Item: Не удается найти путь «\ isilon1 \ блоб \ dcbld \ ру-D \ CB \ LD-9 \ 94 \ 1.wav \ isilon1 \ blob \ dcbld \ pv-D \ CB \ LD-9 \ 94 \ 2.wav ', потому что его не существует.
Я прихожу из Unix, так что это ново для меня.
Большое спасибо Bacon Bits ... можете ли вы объяснить, что представляет собой $ _ –
'$ _' - это специальная переменная (см.« Get-Help about_Automatic_Variables », хотя там не так много). Это означает «текущий объект в трубопроводе». Он используется в основном с 'ForEach-Object' и' Where-Object', но это очень распространенные командлеты. –