在Windows服务器上创建任务

在Windows服务器上创建任务

我需要创建一个任务,从网站下载一个经过 gzip 压缩的文件,然后解压并复制到服务器上的各个文件夹中。我真的不知道实现此目的的最佳方法是什么。有什么建议/最佳实践吗?

我正在考虑创建一个 bash 脚本来执行此操作,但我不知道如何解压缩文件,甚至在这里我也不知道是否应该使用普通 shell 还是 powershell。

答案1

@danielgek — 从 PowerShell 的角度来看,您可以使用以下内容:

从网站下载文件的语法:

$source = "http://example.com/file.zip

$目标=“c:\文件.zip”

调用-WebRequest $source-OutFile $destination

这是一个解压缩文件的函数。

函数 Extract-Zip($file,$destination) {

$shell = new-object-com shell.application

$zip = $shell.名称空间($文件)

foreach($item 在 $zip.items() 中) {

$shell.命名空间($destination).copyhere($item) }

}

您可以在脚本中使用该函数,如下所示:

Extract-Zip –File “C:\file.zip” –Destination “C:\destination”

编辑:这是您可以用于 GZip 文件的函数:

Function DeGZip-File{
 Param(
    $infile,
    $outfile = ($infile -replace '\.gz$','')
    )

 $input = New-Object System.IO.FileStream $inFile, ([IO.FileMode]::Open), ([IO.FileAccess]::Read), ([IO.FileShare]::Read)
 $output = New-Object System.IO.FileStream $outFile, ([IO.FileMode]::Create), ([IO.FileAccess]::Write), ([IO.FileShare]::None)
 $gzipStream = New-Object System.IO.Compression.GzipStream $input, ([IO.Compression.CompressionMode]::Decompress)
 $buffer = New-Object byte[](1024)
 while($true){
  $read = $gzipstream.Read($buffer, 0, 1024)
  if ($read -le 0){break}
  $output.Write($buffer, 0, $read)
  }

 $gzipStream.Close()
 $output.Close()
 $input.Close()
}

$infile='C:\Temp\DECfpc1new.csv.gz'
$outfile='c:\temp\DECfpc1new.csv'

DeGZip-File $infile $outfile`

相关内容