Сравнение файлов Powershell

13
задан kbrimington 16 August 2010 в 16:48
поделиться

4 ответа

Полагаю, это будет зависеть от вашего определения "одинаковые"

Compare-Object (ls Source\Test.*) (ls Dest\Test.*) -Property Name, Length, LastWriteTime

Это сравнит фактические объекты FILE по имени, длине и дате изменения. Добавление -IncludeEqual приведет к тому, что будут показаны также те, которые одинаковы в обоих местах.

Если вы хотите копировать только те файлы из "Source", которые не совпадают в "Destination", просто сделайте следующее:

Compare-Object (ls $Source) (ls $Destination) -Property Name, Length, LastWriteTime -passthru | 
Where { $_.PSParentPath -eq (gi $Source).PSPath } |
Copy-Item $Destination

НЕ начинайте писать скрипты get-content (как предлагают другие) для сравнения файлов - вы будете загружать все в память...

ОБЯЗАТЕЛЬНО рассмотрите возможность использования robocopy (хотя синтаксис командной строки устарел). =Þ

11
ответ дан 1 December 2019 в 08:51
поделиться

Что не так с comp.exe или fc.exe? Просто проверьте $? после их вызова, чтобы узнать, прошла команда успешно или нет.

3
ответ дан 1 December 2019 в 08:51
поделиться

Вы просто даете две строки в Compare-Object , вам нужно содержимое файла:

Compare-Object (gc $File1) (gc $File2)

Также вывод, который вы даете, не не означает, что файлы совпадают.

6
ответ дан 1 December 2019 в 08:51
поделиться

Вы можете проверить содержимое файла на равенство, указав пути $ path1 и $ path2 следующим образом:

[io.file]::ReadAllText($path1) -eq [io.file]::ReadAllText($path2)

... Хотя вы можете вместо этого сравнить результаты :: ReadAllBytes () метод.

Если честно, я просто использую Robocopy даже из PowerShell, когда мне нужно копировать только измененные или добавленные файлы.

1
ответ дан 1 December 2019 в 08:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: