我有一个文件夹里面有很多文件和文件夹。我想通过ftp将该文件夹发送到远程主机。我认为Windows ftp客户端无法做到,所以我决定归档所有文件(进入某些zip或其他),然后通过ftp发送一个文件。我怎么能在powershell(2.0)中做到这一点?压缩并不重要,重要的是只有1个文件。
提前感谢。
答案 0 :(得分:1)
因此,您可以递归获取文件夹的文件。在此之后,您可以将它们添加到您的ziparchive并通过FTP发送。 Powershell不是归档文件的功能。但是有一些外部工具。好的是来自7zip和dll SharpZipLib的命令行。
$itemslist = Get-ChildItem C:\\folder -recurse
$filelist = New-Object System.Collections.ArrayList
foreach ($item in $itemslist)
{
if ($item.GetType().FullName -eq 'System.IO.FileInfo')
{
$filelist.Add($item)
}
}
foreach ($file in $filelist)
{
//Add file to your ZipArchive
}
//Send ZipArchive
答案 1 :(得分:0)
答案 2 :(得分:0)
使用DotNetZip非常简单。
[System.Reflection.Assembly]::LoadFrom("c:\\dev\dotnet\\Ionic.Zip.dll");
$directoryToZip = "c:\\temp";
$zipfile = new-object Ionic.Zip.ZipFile;
$zipfile.AddEntry("Readme.txt", "This is a zipfile created from within powershell.")
$zipfile.AddDirectory($directoryToZip, "home")
$zipfile.Save("ZipFiles.ps1.out.zip");
$zipfile.Dispose();
作为the ZipFile.AddDirectory() method的一部分,ZipFile对象为您执行递归。
DotNetZip是一个免费的图书馆。
一个附加注释 - 作为软件版本的一部分,我有理由在过去进行FTP上传。我发现在连续上传时,大多数文件都没有改变。所以我介绍了一个“目录”文件,它将每个文件的MD5哈希映射到它的名字。在上传之前,我会下载目录,然后根据磁盘上的文件MD5检查表中的每个MD5。如果匹配,则无需上传该特定文件。这节省了大量的时间和数据传输。
尽管如此,我没有PowerShell脚本。 :其中