2013-12-11 1 views
1

У меня есть сценарий, который берет файлы и зашифровывает их в пакет в зависимости от даты. Как бы я мог поместить файлы по отдельности (возможно, foreach) и оставить их в том же каталоге? Я также получаю сообщение об ошибке $ FileSet2.Как закрепить отдельные файлы в powershell

Function Zip 
{ 
    Param 
    (
     [string]$FileZip 
     , 
     [string[]]$NeedsZipping 
    ) 

    $Directory = Get-Location 
    Set-Location "C:\Users\lostd\Desktop\7-ZipPortable\" 
    .\7zG.exe A -tzip $FileZip $NeedsZipping | Out-Null 
    Set-Location $Directory 
} 

$filename = "tester" 
$CurrentTime = Get-Date 
$DaySet1 = "5" 
$DaySet2 = "10" 
$TargetFolder = "C:\Users\lostd\Documents\*.*" 
$LastMod = $CurrentTime.AddDays(-$DaySet1) 
$LastMod2 = $CurrentTime.AddDays(-$DaySet2) 
$FileSet1 = Get-Childitem $TargetFolder -Recurse | Where {$_.LastMod -lt "$LastMod2"} 
$FileSet2 = Get-Childitem $TargetFolder -Recurse | Where {$_.LastMod -gt $LastWrite -AND $_.LastMod -lt $LastMod2} 
#$FileSet1 

Zip C:\Users\lostd\Desktop\TEST.zip $FileSet1 

If(Test-Path C:\Users\lostd\Desktop\TEST.zip) 
{ 
    Remove-Item $FileSet2 
} 

Заранее спасибо

ответ

1

Хорошо, это заняло некоторое время, но я понял это. Было несколько вопросов. Вам нужно будет заменить следующее:

Zip C:\Users\skochkr\Desktop\TEST.zip $Files 
If(Test-Path C:\Users\lostd\Desktop\TEST.zip) 
    {Remove-Item $Files2} 

с

foreach ($File in $Files) 
{ 
    Set-Location "C:\Users\lostd\Documents\purge\" 
    $Zipname = $File.Name.Replace(".", "-") 
    Zip C:\Users\lostd\Documents\purge\$zipname $File 
} 
sleep 5 
foreach ($File in $Files) 
{ 
    Remove-Item -Force $File 
} 

это будет пронестись каждый файл в $Files индивидуально (вместо того, чтобы один почтовый файл со всеми содержимым внутри), пока он сохраняет то же имя и тип расширения. Назначение заархивированного файла также необходимо было установить в нужное место, иначе zipped-файл был отправлен в папку, где находится 7-Zip.

0

Ошибка на $ Files2 является то, что ваш л/GT переворачивается неправильный путь вокруг.

Вы говорите, где LastWriteTime старше (больше), чем 10 дней назад, и менее 20 дней назад, что всегда ложно. Я считаю, что вы хотите перевернуть два, чтобы получить файлы, где LastWriteTime меньше 10 дней назад, но старше (больше), чем 20 дней назад.

Что касается связывания их, можете ли вы предоставить дополнительную информацию/разъяснения о том, как вы хотите связать их и куда должны идти файлы?

+0

Прямо сейчас все файлы в '$ File' заархивированы в один файл. Я хочу, чтобы все файлы, отвечающие критериям '$ File', были зашиты по отдельности. Я думаю, что лучший способ сделать это - положить '$ File' и' $ File2' в массив, а затем использовать цикл foreach. Я хочу, чтобы они были помещены в тот же каталог, где они изначально расположены. Я просто не знаю, как это сделать. –

Смежные вопросы