编写批处理实用程序以存档Windows Server 2008 R2上的文件

时间:2014-06-01 06:49:17

标签: batch-file powershell windows-server-2008 windows-server-2008-r2 archive

  

我需要编写一个命令行(PowerShell或DOS)实用程序   归档在文件夹中指定的日期之间创建的所有文件   X并将它们存储为同一文件夹中的.zip包。

此实用程序将被安排到Windows调度程序中,其中将提供tofrom个日期store location之类的参数,并且它将在指定的持续时间内运行,例如每天中午12点。

是否可以将其作为批.bat个文件写入? Windows内部是否有内置功能来压缩文件,或者我需要使用7-Zip等第三方程序。

我不是在寻找任何勺子喂食而只是一个方向,任何人都可以指导我参加教程或其他什么。基于DOSPowerShell的解决方案都适用于我。

请帮我解决这个问题。

谢谢。

3 个答案:

答案 0 :(得分:2)

我会选择PowerShell。

使用PowerShell,您可以使用Get-Date命令行开关和比较运算符轻松构建和比较日期。你可以尝试类似的东西:

$folderPath = 'C:\Temp'

$date1 = Get-Date '2014-05-01'
$date2 = Get-Date '2014-05-31'

foreach( $item in (Get-ChildItem $folderPath) )
{
    if( $item.LastWriteTime -ge $date1 -and $item.LastWriteTime -le $date2 )
    {
        # Compression step
    }
}

对于压缩,您有几个选项,如question中所述。

对于脚本参数,您可以查看this blog article

答案 1 :(得分:0)

这是一个基于Cristophe C&#39的powershell脚本

构建的批处理文件

命令行需要foldertwo dates,并将最后修改过的文件名从date1写入date2到名为daterange.txt

的文本文件中

如果在问题中添加了更多详细信息,可以添加一些代码来压缩文件。

@echo off
if "%~3"=="" (
echo "%~0" "c:\folder" yyyy-mm-dd1 yyyy-mm-dd2
echo(
echo( This returns last-modified files in the folder from the two dates inclusive
echo( and puts them in a file called "daterange.txt"
echo(
echo( Requires Powershell V3+ (Powershell scripting also needs to be enabled^)
echo(
pause
goto :EOF
) 

set "file=%temp%\psdaterange.ps1"

(
echo( $folderPath = '%~1\'
echo( 
echo( $date1 = Get-Date '%~2'
echo( $date2 = Get-Date '%~3'
echo( 
echo( foreach( $item in (Get-ChildItem -file $folderPath^) ^)
echo( {
echo( if( $item.LastWriteTime -ge $date1 -and $item.LastWriteTime -lt $date2.AddDays(1^) ^)
echo(     {
echo(         Write-Host $folderPath$item
echo(     }
echo( }
) >"%file%"

powershell "%file%" > "daterange.txt"
del "%file%"

答案 2 :(得分:0)

这是PowerShell 5.0中提供的Compress-Archive实用程序。

# Create a zip file with the contents of C:\Stuff\
Compress-Archive -Path C:\Stuff -DestinationPath archive.zip

# Add more files to the zip file
# (Existing files in the zip file with the same name are replaced)
Compress-Archive -Path C:\OtherStuff\*.txt -Update -DestinationPath archive.zip

# Extract the zip file to C:\Destination\
Expand-Archive -Path archive.zip -DestinationPath C:\Destination

有关详细信息,请参阅此答案: How to create a zip archive with PowerShell?