gpt4 book ai didi

powershell - 如何在 PowerShell 中从 Web 下载整个文件夹/子文件夹

转载 作者:行者123 更新时间:2023-12-04 19:14:32 24 4
gpt4 key购买 nike

我可以使用以下方法从网络下载单个文件:

$wc = New-Object System.Net.WebClient
$wc.DownloadFile("http://blah/root/somefile.ext", "C:\Downloads\www\blah\root\somefile.ext")

但是如何下载所有文件,包括子文件夹?像下面这样的东西会很好......
$wc.DownloadFile("http://blah/root/", "C:\Downloads\www\blah\root\")

根文件夹本身在 IE 中显示为目录列表,您知道,例如:
[To Parent Directory]
01 July 2012 09:00 1234 somefile.ext
01 July 2012 09:01 1234 someotherfile.ext

作为奖励,我如何只下载根文件夹中的文件,而忽略子文件夹?

最佳答案

以下是我根据 Andy 的建议提出的建议(当然,在 Google 的大量帮助下):

####################################################################################################
# This function copies a folder (and optionally, its subfolders)
#
# When copying subfolders it calls itself recursively
#
# Requires WebClient object $webClient defined, e.g. $webClient = New-Object System.Net.WebClient
#
# Parameters:
# $source - The url of folder to copy, with trailing /, e.g. http://website/folder/structure/
# $destination - The folder to copy $source to, with trailing \ e.g. D:\CopyOfStructure\
# $recursive - True if subfolders of $source are also to be copied or False to ignore subfolders
# Return - None
####################################################################################################
Function Copy-Folder([string]$source, [string]$destination, [bool]$recursive) {
if (!$(Test-Path($destination))) {
New-Item $destination -type directory -Force
}

# Get the file list from the web page
$webString = $webClient.DownloadString($source)
$lines = [Regex]::Split($webString, "<br>")
# Parse each line, looking for files and folders
foreach ($line in $lines) {
if ($line.ToUpper().Contains("HREF")) {
# File or Folder
if (!$line.ToUpper().Contains("[TO PARENT DIRECTORY]")) {
# Not Parent Folder entry
$items =[Regex]::Split($line, """")
$items = [Regex]::Split($items[2], "(>|<)")
$item = $items[2]
if ($line.ToLower().Contains("&lt;dir&gt")) {
# Folder
if ($recursive) {
# Subfolder copy required
Copy-Folder "$source$item/" "$destination$item/" $recursive
} else {
# Subfolder copy not required
}
} else {
# File
$webClient.DownloadFile("$source$item", "$destination$item")
}
}
}
}
}

当然不能保证,但它适用于我感兴趣的网站

关于powershell - 如何在 PowerShell 中从 Web 下载整个文件夹/子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11436694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com