Kako uporabiti PowerShell za preverjanje, ali datoteka obstaja

28. maja 2021 35296 Pogledi powershell preveri, ali datoteka obstaja

V tem območju S vas Victor nauči, kako uporabljati PowerShell za preverjanje, ali datoteka obstaja. Vodnik zajema več primerov uporabe PowerShell za preverjanje, ali datoteka obstaja.





Če želite uporabiti PowerShell za preverjanje, ali datoteka obstaja, uporabite Testna pot Cmdlet. Lahko pa vnesete pot datoteke neposredno v datoteko Testna pot ukaz ali datoteko shranite v spremenljivko. Nato uporabite spremenljivko v Testna pot .



Brskajte po temah objav

Kako uporabiti PowerShell za preverjanje, ali datoteka obstaja brez spremenljivke

Kako uporabiti PowerShell za preverjanje, ali datoteka obstaja brez spremenljivke

Ta razdelek vas uči, kako teči Testna pot ukaz brez spremenljivke.



Test-Path lahko zaženete kot samostojen ukaz. Poleg tega lahko ukaz kombinirate tudi z an ČE izjavo za izvajanje dodatnih nalog na podlagi rezultata Testna pot ukaz.



Kako zagnati preskusno pot neposredno brez spremenljivke

Ta pododdelek vas uči, kako zagnati samo testno pot (brez uporabe rezultata v datoteki ČE izjava).

Imam datoteko z imenom process.txt v E: eports.



Kako uporabiti PowerShell za preverjanje, ali datoteka obstaja

Če želite preveriti, ali datoteka obstaja, vnesite spodnji ukaz v PowerShell in pritisnite enter



|_+_|

Ko sem pritisnil, se je vrnil PowerShell Prav , kar pomeni, da datoteka obstaja.

Kako uporabiti PowerShell za preverjanje, ali datoteka obstaja

Če pa zaženem isti ukaz za datoteko, ki ne obstaja, se vrne PowerShell Napačno .

Kako uporabiti PowerShell za preverjanje, ali datoteka obstaja

Kako združiti testno pot in stavek IF brez spremenljivke

Kot sem že omenil, lahko po uporabi PowerShell Test-Path preverite, ali datoteka obstaja, rezultat uporabite v ČE izjava za izvajanje nalog dodatkov.

V tem primeru bom preveril, ali E: eportsprocesses.txt obstaja, in če obstaja, bom kopiral datoteko v C: eports. Tukaj je skript, ki bo opravil svoje delo.

Priporočljivo je, da ta ukaz zaženete v PowerShell ISE |_+_|

Tukaj je rezultat v PowerShell ISE in datoteka, kopirana v C: eports

najboljši kanali na mobdro
Kako uporabiti PowerShell za preverjanje, ali datoteka obstaja

Skript lahko naredim pametnejši z dodajanjem dveh dodatnih vrstic.

|_+_|

in….

|_+_| Prvi zgornji ukaz prikaže sporočilo, če je datoteka kopirana. Drugi prikaže sporočilo, da datoteka ne obstaja.

Tukaj je spremenjen skript ...

|_+_|

Kako uporabiti PowerShell za preverjanje, ali datoteka obstaja s spremenljivko

Kako uporabiti PowerShell za preverjanje, ali datoteka obstaja s spremenljivko

V zadnjem razdelku sem vam pokazal, kako uporabiti PowerShell za preverjanje, ali datoteka obstaja brez uporabe spremenljivk. V tem razdelku bom rezultat testne poti shranil v spremenljivko. Nato uporabite spremenljivko v an ČE izjava.

V primeru v tem razdelku želim preveriti, če prva datoteka.txt obstaja na poti, prikazani na spodnji sliki. Potem, če obstaja, bom kopiral datoteko v C:PS

Kako uporabiti PowerShell za preverjanje, ali datoteka obstaja s spremenljivko

V prvih korakih bom zagnal spodnji ukaz:

|_+_|

Ta ukaz je enak prejšnjemu z eno razliko – rezultat ukaza je shranjen v datoteka obstaja spremenljivka.

Kako uporabiti PowerShell za preverjanje, ali datoteka obstaja s spremenljivko

Kako uporabljati PowerShell za preverjanje, ali datoteka obstaja in jo kopirajte

Ko sem predstavil ta razdelek, sem shranil izhod Testna pot ukaz za datoteka obstaja spremenljivka.

|_+_|

V tem pododdelku vas bom naučil, kako kopirati datoteko, če obstaja. Za to bom predstavil ČE izjava z Copy-Item ukaz.

|_+_|

Tukaj je celoten skript s kombiniranimi ukazi:

|_+_|

In tukaj je skript v PowerShell ISE.

Kako uporabiti PowerShell, da preverite, ali datoteka obstaja in jo izbrišete

V zadnjem pododdelku ste videli, kako preveriti, ali datoteka obstaja, in kopirati datoteko. Kaj pa, če želite namesto tega kopirati datoteko?

Če želite datoteko izbrisati, namesto da bi jo kopirali, zamenjajte datoteko Copy-Item ukaz z Odstrani-predmet ukaz.

Tukaj je posodobljen skript, ki uporablja stavek PowerShell IF za preverjanje, ali datoteka obstaja. Potem, če obstaja, ga izbrišite ...

|_+_|

Kako uporabljati PowerShell za preverjanje, ali datoteka obstaja. Drugače Izhod

V nekaterih situacijah skriptiranja PowerShell boste morda želeli preveriti, ali datoteka obstaja. Nato, če obstaja, izvedite določeno nalogo – na primer kopirajte ali izbrišite datoteko – v nasprotnem primeru zapustite skript.

Če želite to doseči, morate le dodati Drugače blok od Če izjava.

V zadnjem pododdelku sem uporabil ta skript za brisanje datoteke, če obstaja.

|_+_|

Če želim, da se skript zapre, če datoteka ne obstaja, bom spremenil skript, kot je prikazano spodaj ...

|_+_|

Tukaj je logika spremenjenega scenarija ...

Preverite, ali datoteka E: eportsfirst-file.txt obstaja. Če obstaja, izbrišite datoteko.

Če pa datoteka ne obstaja, zaženite ukaz v Drugače blok od Če izjava. V tem primeru je ukaz v Drugače zanka je beseda, Odmor .

Odmor pove PowerShellu, naj preneha obdelovati skript. Lahko tudi dodate Odmor v bloku If stavka – pod ukazom Remove-Item…

|_+_|

Kako uporabiti PowerShell za preverjanje, ali datoteka obstaja in ni prazna

To je še en pogoj, ki je pogost pri skriptiranju PowerShell – preverjanje, ali datoteka obstaja in ni prazna. To lahko velja za datoteke dnevnika.

Na primer, če imate aplikacijo, ki ustvarja in posodablja datoteke dnevnika, lahko napišete skript PowerShell, ki preveri, ali so nove datoteke dnevnika posodobljene.

avast zavzame 100 diskov

Če želite preveriti, ali datoteka obstaja, uporabite Testna pot ukaz. Če pa želite preveriti, ali je datoteka prazna, morate uvesti še en ukaz, Get-ChildItem .

V tem scenariju lahko uporabite Get-ChildItem ukaz na dva načina.

eno , če želite preveriti, ali je ena datoteka prazna, lahko zaženete Get-ChildItem ukaz, pri čemer uporabite celotno pot datoteke kot Pot parameter. dve , če pa želite preveriti kopico datotek v mapi, uporabite pot do mape kot Pot parameter.

V tem razdelku bom dal primer, ki preveri, ali določena datoteka obstaja in je prazna. Drugo možnost bom obravnaval v Kako uporabljati PowerShell za preverjanje, ali datoteka obstaja mapa razdelek kasneje v tem priročniku.

V tem primeru želim preveriti, ali je datoteka, prva datoteka.txt in če je prazen.

Kako uporabiti PowerShell za preverjanje, ali datoteka obstaja in ni prazna

Kot sem že omenil, je prvi korak zagon Get-ChildItem ukaz, pri čemer uporabite celotno pot datoteke kot Pot parameter. Za začetek zaženite spodnji ukaz ...

|_+_|

Tukaj je rezultat ukaza. Iz rezultata ukaza lahko vidite, da ima datoteka lastnost imenovana Dolžina .

Učinkovito, Dolžina lastnost datoteke prikazuje velikost datoteke. Poleg tega, če je datoteka prazna, Dolžina bo nič (0).

Torej, če želimo uporabiti PowerShell za preverjanje, ali ni prazen, bomo preverili, ali je Dolžina NI nič (0).

Da bi to dosegel, bom spremenil zadnji ukaz, kot je prikazano spodaj ...

|_+_|

Tukaj je rezultat ukaza v PowerShell. V tem primeru se je ukaz vrnil, ker je velikost moje datoteke 0 (prazna). napačno .

Kako uporabiti PowerShell za preverjanje, ali datoteka obstaja in ni prazna

To pomeni, da je ta datoteka prazna.

Toda kako vključimo bit, ki preverja, ali datoteka obstaja? Lepo, da si vprašal!

Da bi predstavil logiko, ki uporablja PowerShell za preverjanje, ali datoteka obstaja, in tudi za preverjanje, ali datoteka NI prazna, bom združil dele našega prejšnjega skripta in Get-ChildItem ukaz zgoraj.

Tukaj je moj spremenjen skript ...

|_+_|

V tej spremenjeni različici skripta sem naredil naslednje spremembe ...

  1. V vrstici 2 sem shranil Get-ChildItem ukaz, ki preveri, ali je datoteka prazna – v spremenljivki, ki se imenuje $checkiffileisempty .
|_+_|
  1. Nato sem v vrstici 3 dodal še en pogoj Če izjava. Pogojni del Če stavek je bil posodobljen na Če (($fileexists -eq $True) -in ($checkiffileisempty -eq $False)).

    Ta pogoj preverja, ali je kaj shranjeno $fileexist je Prav (datoteka obstaja). Poleg tega preveri, ali je tisto, kar je shranjeno $checkiffileisempt je Napačno (datoteka je prazna).

    PowerShell dejansko preveri, ali je Testna pot ukaz, ki je preveril, ali pot do datoteke obstaja, je Prav . Poleg tega preverja tudi, ali je Get-ChildItem ukaz, ki preveri, ali datoteka NI prazna, je Napačno (kar pomeni, da je datoteka prazna)
  2. Končno, če sta oba pogoja izpolnjena, bo PowerShell v 4. vrstici izvedel ukaz v oklepaju {} stavka If.

    V tem primeru imam ta ukaz v oklepaju {} stavka If.
|_+_|

Ukaz doda besedilo v vrednost parameter za Set-Content ukaz.

Če želite preizkusiti, ali skript deluje, ga kopirajte v PowerShell ISE in zaženite skript ...

Kako uporabiti PowerShell za preverjanje, ali datoteka obstaja in ni prazna

Ko sem zagnal skript, datoteko, prva datoteka.txt – ki je bil prej prazen – ima zdaj v sebi nekaj vrednosti. Poleg tega velikost datoteke ni več nič (0)!

Kako uporabiti PowerShell za preverjanje, ali datoteka obstaja v mapi

Kako uporabiti PowerShell za preverjanje, ali datoteka obstaja v mapi

Ta priročnik je doslej pokrival več scenarijev za uporabo PowerShell za preverjanje, ali datoteka obstaja.

V tem razdelku se želim poglobiti v mape. Natančneje, naučili se boste, kako preveriti, ali datoteka obstaja v trenutni mapi ali v vseh podmapah.

Poleg tega se boste naučili, kako uporabljati PowerShell za preverjanje, ali datoteka obstaja v več mapah. Na koncu vam bom pokazal, kako uporabiti nadomestni znak za preverjanje, ali datoteka obstaja.

Kako uporabiti PowerShell za preverjanje, ali datoteka obstaja v trenutni mapi

V tem prvem primeru se boste naučili, kako preveriti, ali datoteka obstaja v trenutni mapi – razen vseh podmap.

V tem primeru želim preveriti, ali datoteke s pripono datoteke .log obstajajo v mapi E: eports. Vendar želim izključiti vse podmape.

Prvi korak je zagon Get-ChildItem ukaz. Nato napeljite izhod na Kam-predmet in filtrirajte po PSIsContainer lastnine.

The PSIsContainer lastnost je lastnost, ki definira mape ali imenike. V Kam-predmet ukaz, sem podal $_.PSIsContainer -ne $true. Ta ukaz preprosto pravi Ne vrni nobenega predmeta, če je PSIsContainer lastnost je True. To bo vrnilo samo datoteke.

Tukaj je ukaz …

namestitev twrp z odin
|_+_|

In tukaj je rezultat v PowerShell ...

Kako uporabiti PowerShell za preverjanje, ali datoteka obstaja v trenutni mapi

Zadnji korak je vrniti celotno pot vseh datotek s pripono .log v trenutni mapi.

Tukaj je ukaz …

|_+_|

In rezultat…

Od tega trenutka, če želite izvajati nadaljnja opravila nad datotekami, lahko izhod zadnjega rezultata prevedete v a Za vsakogar zanka. Nato znotraj Za vsakogar zanko, lahko izvajate dodatne ukaze.

Kako uporabljati PowerShell za preverjanje, ali datoteka obstaja v podmapah

Če želite preveriti, ali določena datoteka ali datoteke obstajajo v vseh podmapah, ne v trenutni mapi, morate nekoliko spremeniti Get-ChildItem ukaz.

Natančneje, ko napeljujete Get-ChildItem ukaz, v Kam-predmet , filtriraš Kam-predmet vrniti samo mape.

|_+_|

Ukaz vrne celotno pot do vseh podmap v navedeni mapi ...

V naslednjem koraku morate uporabiti Za vsakogar stavek za ponavljanje po vseh mapah, ki jih je vrnil zadnji ukaz. Nato znotraj Za vsakogar izjavo, zaženite drugo Get-ChildItem ukaz proti vsaki podmapi.

Obstajajo tri različice Za vsakogar ampak v tem primeru bom uporabil Za vsakogar -Objektni ukaz.

|_+_|

Ukaz prikaže vse datoteke dnevnika v podmapah ...

Kako uporabljati PowerShell za preverjanje, ali datoteka obstaja v podmapah

Kako uporabiti PowerShell za preverjanje, ali datoteka obstaja v trenutni mapi in v vseh podmapah

V zadnjih 2 pododdelkih sem uporabil PSIsContainer lastnost, da filtrira podmape ali vrne samo podmape. V tem primeru bom odstranil PSIsContainer lastnine.

Vendar bom predstavil a Get-ChildItem ukazni parameter, imenovan Rekurzija . The Rekurzija sile parametrov Get-ChildItem da preverite določeno mapo in vse njene podmape.

Tukaj je spremenjen skript.

|_+_|

The Rekurzija parameter je uveden v prvem Get-ChildItem ukaz. V drugem ni potrebno Get-ChildItem ukaz (znotraj ForEach-Object blok).

Tukaj je rezultat ukaza. Tokrat poročilo vključuje vse datoteke dnevnika v zgornji mapi in vse njene podmape.

Kako uporabljati PowerShell za preverjanje, ali datoteka obstaja v oddaljenem računalniku

Kako uporabljati PowerShell za preverjanje, ali datoteka obstaja v oddaljenem računalniku

Če želite preizkusiti, ali datoteka obstaja na oddaljenem računalniku, lahko uporabite isto načelo, ki je opisano v vseh primerih v tem priročniku.

Vendar morate uvesti nov ukaz, imenovan Invoke-Command . Nato znotraj Invoke-Command ukaz, uporabite njegov ScriptBlock parameter za določitev enega od ukazov, o katerih smo razpravljali prej v tem priročniku.

Druga pomembna stvar, ki jo je treba upoštevati, je, da boste morda morali določiti uporabniško ime in geslo za račun z dovoljenjem za povezavo z oddaljenim računalnikom.

Poleg tega mora navedeni račun imeti dovoljenje za izvajanje ukaza v ScriptBlock parameter – na oddaljenem računalniku.

Na koncu uporabite Ime računalnika parameter za določitev imena oddaljenega računalnika.

Za vašo referenco, tukaj je splošna sintaksa Invoke-Command ukaz.

|_+_|

Če želite prebrati več o Invoke-Command glejte Reference in dodatno branje na koncu tega priročnika.

3D filmi o eksodusu

Če upam, da sem vas lahko uspešno naučil, kako uporabljati PowerShell za preverjanje, ali datoteka obstaja!

Upam tudi, da vam je S Zone v pomoč. Če se vam zdi v pomoč, vljudno glasujte da na spodnje vprašanje Ali je bila ta objava koristna.

Lahko pa postavite vprašanje, pustite komentar ali pošljete povratne informacije z obrazcem za pustite odgovor na koncu te strani.

Za več e-poštnih tehnoloških S con obiščite našo stran z navodili za Windows PowerShell. Morda vam bo v veliko pomoč tudi naša stran Delo z domače strani.

Reference in dodatno branje

  1. Invoke-Command
  2. Powershell, če je drugače razloženo: sintaksa in primeri
  3. Get-ChildItem
  4. Testna pot