Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Pomoc s powershell skriptom

Caute, bol by som velmi vdacny za pomoc s nasledujucim skriptom:

$filepath="<cesta k suborom>"
$date=(get-date).AddDays(-1).ToString("yyMMdd")
$array=@("${filepath}\<predpona>${date}","${filepath}\<predpona>${date}","${filepath}\<predpona>${date}")
foreach($i in $array){
if ( -Not $i )
    {
    echo $i
    }
}

problem je v tom, ze za ${date} sa v nazve suboru nachadza este dalsi retazec, ktory je nahodny a tu je kamen urazu - neviem, ako to tam zadat. Popripade kludne naviest na zmenu logiky, v podstate kontrolujem pritomnost suborov voci urcitemu zoznamu.

Vopred dik moc.

Předmět Autor Datum
a) použil bych get-childitem a match nebo contains b) hod sem nejaký screen s příkladem, co vlastně…
MKc 17.11.2019 08:41
MKc
Screen sem nemozem hodit (nie ze by som nechcel, ale jedna sa o firemne data), jedna sa o to, ze mam…
Michal2 17.11.2019 09:30
Michal2
A ty si v tej firme zamestnaný ako IT, alebo ho zastupuješ? Super tajná firma, ktorá si nemôže dovol…
pozorovateľ 17.11.2019 10:10
pozorovateľ
Preco tak utocne, normalnejsie by to neslo? Proste nie som kamarat s powershellom.
Michal2 17.11.2019 10:29
Michal2
Veď normálne. A nemusí to byť len powershell, to isté sa dá spraviť aj obyčajným .bat
pozorovateľ 17.11.2019 10:35
pozorovateľ
V pohode, kludne moze byt aj .bat, powershell ma napadol koli tomu, ze je blizsie k bashu, na ktory…
Michal2 17.11.2019 11:12
Michal2
Tak nějak z hlavy $dir = "D:\test\" $pattern = (get-date).adddays(-1).date.tostring("yyyyMMdd") # r…
MKc 17.11.2019 10:29
MKc
Vyskusam, diky moc, ale az zajtra, dam urcite vediet. S tym casom je to ok, ten skript bude spustat…
Michal2 17.11.2019 10:32
Michal2
Tak som to nakoniec poriesil, nie je to uplne idealne, islo byt to vysperkovat, ale pre potreby stac… poslední
Michal2 22.11.2019 10:04
Michal2

Screen sem nemozem hodit (nie ze by som nechcel, ale jedna sa o firemne data), jedna sa o to, ze mam adresar, kde sa kazdy den o 22:00 generuje sada 9 suborov, ktore maju v nazve spolocne len datum (v tvare yyMMdd) a ja kontrolujem nasledujuci den, ci sa predchadzajuci den v tych 22:00 tych 9 suborov vygenerovalo.

Tak nějak z hlavy

$dir = "D:\test\"
$pattern = (get-date).adddays(-1).date.tostring("yyyyMMdd") # rád mám datum od 12:00 AM a ne od random času

if ((Get-ChildItem $dir -file |?{$_.fullname -match $pattern}).count -eq "9") {"sedi to (posli maila ze je vse OK)"} else {"nesedi to, jina akce - posli maila ze se neco nepovedlo"}

Tak som to nakoniec poriesil, nie je to uplne idealne, islo byt to vysperkovat, ale pre potreby staci:

$date=(get-date).AddDays(-3).ToString("yyMMdd")
$filepath="C:\Users\<user>\Pokus3"
$file1=gci "${filepath}\New1TextDocument${date}*" -name
$file2=gci "${filepath}\New2TextDocument${date}*" -name
$file3=gci "${filepath}\New3TextDocument${date}*" -name
$file4=gci "${filepath}\New4TextDocument${date}*" -name
$file5=gci "${filepath}\New5TextDocument${date}*" -name
$array=@($file1,$file2,$file3,$file4,$file5)
foreach ($i in $array) {
if ( -Not $i) {   
   Write-Host "<<< File missing >>>"
              }
else {Write-Host "File $i present"}
}

Zpět do poradny Odpovědět na původní otázku Nahoru