2016-10-14 5 views
-2

У меня есть работа, чтобы сделать это требует от меня, чтобы создать автоматизированный процесс, в котором я нахожусь вPowershell: автоматизированный процесс копирования файлов и сравнить окрошка

  1. FolderA файлы ---- Get-Filehash -algorithm MD5 > c:\test\Axxx.txt
  2. копирование файлов из FolderA к FolderB
  3. FolderB файлов ---- Get-Filehash -algorithm MD5 > c:\test\Bxxx.txt
  4. сравнить различия хэша в обеих текстовых файлах (то же местоположение)
  5. никакой разницы, операция завершена
  6. Да разницы, всплывающее окно, чтобы показать различие

Я застрял со всем cmdlets..it слишком трудно UDS! но я все еще пытаюсь научиться PS.

+1

Мы - сообщество, помогающее программистам и программистам-энтузиастам. При этом ожидается, что вы покажете, что вы сделали или попробовали до публикации. Это дает нам кое-что опираться. На данный момент это читается как запрос написания кода, который отключен для SO. Разбейте свой вопрос на свои части и выполните индивидуальный поиск решений этих проблем. Затем, если у вас все еще есть проблемы, пожалуйста, отредактируйте свой вопрос, показывая свою работу, чтобы мы могли лучше помочь вам и сообществу. – Matt

+0

Я не знаю, и ты спрашиваешь. Если вы скопируете свои файлы в папку FolderB, то Hash не изменится, ваш компанайон никогда не будет отличаться. Что вы пытаетесь сделать? – Esperento57

+0

Прошу прощения, я обращу внимание на все это, спасибо Matt –

ответ

0

Вот быстрый способ добиться того, чего вы хотите.

$folderA = "c:\tmp" 
$folderB = "c:\tmp2" 
$hashA = "c:\hashofA.txt" 
$hashB = "c:\hashofB.txt" 

Get-ChildItem $folderA -Recurse -File | Get-FileHash -Algorithm MD5 | Select -ExpandProperty Hash >> $hashA 

Get-ChildItem $folderA -Recurse | foreach{ Copy-Item $_.FullName $folderB} 

Get-ChildItem $folderB -Recurse -File | Get-FileHash -Algorithm MD5 | Select -ExpandProperty Hash >> $hashB 


$a = Get-Content $hashA 
$b = Get-Content $hashB 

if(Compare-Object $a $b) 
{"Files are different"} 
else{"Files are same"} 
+0

Ваш последний Get-ChildItem должен быть $ folderB Junaid. Примечание: вы можете сделать gci -recurse -File вместо «Where {$ _. PSIsContainer -eq $ false}»;) – Esperento57

+0

hmm thanks mate. :) Я не знал, что могу сделать -File. Я исправил ответ. – Junaid

+0

Я сейчас редактировал код, поскольку предыдущий не работал должным образом. Для текстовых файлов вам необходимо использовать Compare-Objects. – Junaid