Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
-vodafone-
HV Guru

liitunud: 26.04.2005
|
12.04.2013 13:03:53
Script või bat, mis kustutaks vanemad kaustad ja sisu, kui... |
|
|
Tere,
Ei hakanud pealkirja liiga pikaks vedama ja jätsin ka uudishimulikele vastajatele veidi põnevust.
Nimelt oleks vaja bat faili või skripti, mis teostaks järgmise töö:
Script või bat, mis kustutaks vanemad kaustad ja sisu, kui kaustamaht ületab teatud piiri.
Igapäevaselt kontrollib see bat kausta sisu ja kui see on alla 1Gb näiteks , siis tegevust ei rakendata. Kui aga järgmisel päeval on kausta sisu suurem kui 1Gb rakendatakse vanemate failide kui 3 päeva kustutamine.
Kustutamiseks on hetkel lihtne käsk:
forfiles -p "C:\what\ever" -s -m *.* -d <number of days> -c "cmd /c del @path" |
Aga kas saab selle nö. "if" käskluse ka siia juurde modida?
|
|
Kommentaarid: 244 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
216 |
|
tagasi üles |
|
 |
RassK
HV Guru

liitunud: 17.01.2007
|
12.04.2013 17:03:52
|
|
|
Kui kasutad Windows 7 (+) on mõttekam ehk powershell script teha.
|
|
Kommentaarid: 116 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
101 |
|
tagasi üles |
|
 |
-vodafone-
HV Guru

liitunud: 26.04.2005
|
12.04.2013 18:21:40
|
|
|
RassK kirjutas: |
Kui kasutad Windows 7 (+) on mõttekam ehk powershell script teha. |
Pole paha mõte.
Kasutan siis PS puhul sellist skripti :
#----- define parameters -----#
#----- get current date ----#
$Now = Get-Date
#----- define amount of days ----#
$Days = "3"
#----- define folder where files are located ----#
$TargetFolder = "C:\eSupport\Manual"
#----- define extension ----#
$Extension = "*.*"
#----- define LastWriteTime parameter based on $Days ---#
$LastWrite = $Now.AddDays(-$Days)
#----- get files based on lastwrite filter and specified folder ---#
$Files = Get-Childitem $TargetFolder -Include $Extension -Recurse | Where {$_.LastWriteTime -le "$LastWrite"}
foreach ($File in $Files)
{
if ($File -ne $NULL)
{
write-host "Deleting File $File" -ForegroundColor "Black"
Remove-Item $File.FullName | out-null
}
else
{
Write-Host "No more files to delete!" -foregroundcolor "Green"
}
} |
Aga pole leidnud ja ise ei oska siia vahele kirjutada seda tingimust, et käivitaks kustutamise osa sellisel juhul kui kausta suurus on üle 1gb
|
|
Kommentaarid: 244 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
216 |
|
tagasi üles |
|
 |
warwas
HV Guru

liitunud: 06.07.2003
|
12.04.2013 18:31:12
|
|
|
Kataloogi suuruse saaksid näiteks sedasi kätte:
$katalooma_sisu = (Get-ChildItem C:\Users -recurse | Measure-Object -property length -sum)
Write-Host ($katalooma_sisu.sum / 1GB) |
Nüüd jääks ainult vajaliku 'if' tingimuse lisamine
|
|
Kommentaarid: 247 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
3 :: |
224 |
|
tagasi üles |
|
 |
-vodafone-
HV Guru

liitunud: 26.04.2005
|
12.04.2013 22:35:25
|
|
|
warwas kirjutas: |
Kataloogi suuruse saaksid näiteks sedasi kätte:
$katalooma_sisu = (Get-ChildItem C:\Users -recurse | Measure-Object -property length -sum)
Write-Host ($katalooma_sisu.sum / 1GB) |
Nüüd jääks ainult vajaliku 'if' tingimuse lisamine |
Ehk minujaoks see keeruliseim osa. Üritasin tuletada teistestskriptidest aga ei hakanud toimima. Mingit näidet või suunitlust pole kellelgi pakkuda?
|
|
Kommentaarid: 244 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
216 |
|
tagasi üles |
|
 |
LiivaneLord
Sõpradele "Olavi"
liitunud: 20.06.2006
|
12.04.2013 22:44:15
|
|
|
-vodafone-, ma ei tea sellest programmimisest halligi, aga äkki midagi sellist:
if(($katalooma_sisu.sum / 1GB)>1){
dosomething
}
|
|
Kommentaarid: 20 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
19 |
|
tagasi üles |
|
 |
warwas
HV Guru

liitunud: 06.07.2003
|
12.04.2013 23:10:55
|
|
|
Eeldusel, et ma sinu ülesandepüstitusest õigest korrektselt aru sain (esimene tingimus on kataloogi suurus üle 1GB ja kui see on tõene, siis minnakse kolmest päevast vanema kraami kallale), siis üks võimalus oleks näiteks selline:
Diskleimer: ma ei ole järgnevat koodi testinud, võib sisaldada mingeid 'puuke'
#----- get current date ----#
$Now = Get-Date
#----- define amount of days ----#
$Days = "3"
#----- define folder where files are located ----#
$TargetFolder = "C:\eSupport\Manual"
#----- define extension ----#
$Extension = "*.*"
#----- define LastWriteTime parameter based on $Days ---#
$LastWrite = $Now.AddDays(-$Days)
#----- get specified folder size ---#
$FolderSize = (Get-ChildItem -Path $TargetFolder -Recurse | Measure-Object -Property length -sum)
#----- if folder is bigger that 1GB, then do something ---#
if (($FolderSize.sum / 1GB) -gt 1)
{
#----- get files based on lastwrite filter and specified folder ---#
$Files = Get-Childitem -Path $TargetFolder -Include $Extension -Recurse | Where {$_.LastWriteTime -le "$LastWrite"}
foreach ($File in $Files)
{
if ($File -ne $null)
{
Write-Host "Deleting File $File" -ForegroundColor "Black"
Remove-Item $File.FullName | Out-Null
}
else
{
Write-Host "No more files to delete!" -ForegroundColor "Green"
}
}
} |
|
|
Kommentaarid: 247 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
3 :: |
224 |
|
tagasi üles |
|
 |
-vodafone-
HV Guru

liitunud: 26.04.2005
|
13.04.2013 00:51:05
|
|
|
Tänud warwas
Proovisin ka ise midagi sarnast meisterdada, aga ma ei taibanud topeltsulgusid panna $foldersize.sum ette ...
|
|
Kommentaarid: 244 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
216 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|