我需要编写一个命令行(PowerShell或DOS)实用程序 归档在文件夹中指定的日期之间创建的所有文件 X并将它们存储为同一文件夹中的
.zip
包。
此实用程序将被安排到Windows调度程序中,其中将提供to
和from
个日期store location
之类的参数,并且它将在指定的持续时间内运行,例如每天中午12点。
是否可以将其作为批.bat
个文件写入?
Windows内部是否有内置功能来压缩文件,或者我需要使用7-Zip
等第三方程序。
我不是在寻找任何勺子喂食而只是一个方向,任何人都可以指导我参加教程或其他什么。基于DOS
和PowerShell
的解决方案都适用于我。
请帮我解决这个问题。
谢谢。
答案 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脚本
构建的批处理文件命令行需要folder
和two 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?