Что такое Powershell-эквивалент этой команды wget?
wget -nc -i downloadList.txt
куда
-i downloadList.txt
загружает список URL-адресов в указанном файле.
-nc
пропускает уже загруженные файлы.
Что такое Powershell-эквивалент этой команды wget?
wget -nc -i downloadList.txt
куда
-i downloadList.txt
загружает список URL-адресов в указанном файле.
-nc
пропускает уже загруженные файлы.
Вы можете использовать не только командлеты PowerShell, но и классы .Net.
Для части -nc получите содержимое файла и выберите только уникальные строки с cat
(псевдоним для Get-Content
) и sort
(псевдоним для Sort-Object
). Затем используйте wget
(псевдоним Invoke-WebRequest
) в этом списке строк, извлекая имя выходного файла из URL с помощью GetFileName
cat downloadList.txt | foreach {wget $_ -OutFile ([System.IO.Path]::GetFileName($_))}
Нет переключателя Powershell, который ведет себя так же, как -nc
Это не только предотвращает перезапись файла. Он также проверяет, существует ли целевой файл, и не запускает вторую загрузку. Весь смысл -nc
состоит в том, чтобы предотвратить фактическую загрузку.
-nc
--no-колошматить
Если файл загружается более одного раза в один и тот же каталог, поведение Wget зависит от нескольких параметров, включая -nc. В некоторых случаях локальный файл будет засорен или перезаписан при повторной загрузке. В остальных случаях это будет сохранено.
При запуске Wget без -N, -nc или -r загрузка одного и того же файла в тот же каталог приведет к сохранению исходной копии файла, а вторая копия получит имя file.1. Если этот файл будет загружен еще раз, третья копия будет называться file.2 и так далее. Если указан параметр -nc, это поведение подавляется, и Wget откажется загружать более новые копии файла. Таким образом, «no-clobber» на самом деле является неправильным в этом режиме. Предотвращается не клобберинг (так как числовые суффиксы уже предотвращали клобберинг), а предотвращение сохранения нескольких версий.
При запуске Wget с -r, но без -N или -nc повторная загрузка файла приведет к тому, что новая копия будет просто перезаписывать старую. Добавление -nc предотвратит это поведение, вместо этого будет сохранена исходная версия и проигнорированы все более новые копии на сервере.
При запуске Wget с параметром -N, с параметром -r или без него решение о том, загружать или нет более новую копию файла, зависит от локальной и удаленной отметки времени и размера файла. -nc не может быть указан одновременно с -N.
Обратите внимание, что при указании -nc файлы с суффиксами .html или (yuck) .htm будут загружаться с локального диска и анализироваться так, как если бы они были получены из Интернета.
Итак, в Powershell V3 вы должны имитировать это поведение. В двух словах:
Invoke-Webrequest
и добавляйте html
как расширение$folder = "D:\my\folder"
Compare $(Dir $folder).BaseName (gc "D:\downloadList.txt") -PassThru |
where {$_.SideIndicator -eq '=>'} |
foreach { wget $_ -OutFile "$folder\$_.html" }
И не гольф
$folder = "D:\my\folder"
$exists = $(Get-ChildItem $folder).BaseName
$urls = Get-Content "D:\downloadList.txt"
$missing = Compare $exists $urls -PassThru | where {$_.SideIndicator -eq '=>'}
$missing | foreach { Invoke-WebRequest -Uri $_ -OutFile "$folder\$_.html" }