Slik bruker du PowerShell for å sjekke om en fil eksisterer

28. mai 2021 35296 Visninger powershell sjekk om filen eksisterer

I denne S-sonen lærer Victor deg hvordan du bruker PowerShell for å sjekke om en fil eksisterer. Veiledningen dekker flere eksempler på bruk av PowerShell for å sjekke om en fil eksisterer.





For å bruke PowerShell til å sjekke om en fil eksisterer, bruker du Test-Path Cmdlet. Du kan imidlertid enten skrive inn filbanen direkte til Test-Path kommando eller lagre filen i en variabel. Bruk deretter variabelen i Test-Path .



Bla gjennom innleggsemner

Hvordan bruke PowerShell for å sjekke om en fil eksisterer uten en variabel

Hvordan bruke PowerShell for å sjekke om en fil eksisterer uten en variabel

Denne delen lærer deg hvordan du løper Test-Path kommando uten variabel.



Du kan kjøre Test-Path som en frittstående kommando. Dessuten kan du også kombinere kommandoen med en HVIS uttalelse om å utføre tilleggsoppgaver basert på resultatet av Test-Path kommando.



Hvordan kjøre testbane direkte uten en variabel

Denne underdelen lærer deg hvordan du kjører Test-Path alene (uten å bruke resultatet i en HVIS uttalelse).

Jeg har en fil som heter processes.txt i E: eports.



Slik bruker du PowerShell for å sjekke om en fil eksisterer

For å sjekke om filen eksisterer, skriv inn kommandoen nedenfor i PowerShell og trykk enter



|_+_|

Da jeg trykket, kom PowerShell tilbake ekte , som betyr at filen eksisterer.

Slik bruker du PowerShell for å sjekke om en fil eksisterer

Men hvis jeg kjører den samme kommandoen for en fil som ikke eksisterer, returnerer PowerShell Falsk .

Slik bruker du PowerShell for å sjekke om en fil eksisterer

Hvordan kombinere testbane og IF-erklæring uten en variabel

Som jeg nevnte tidligere, etter å ha brukt PowerShell Test-Path for å sjekke om en fil eksisterer, kan du bruke resultatet i en HVIS uttalelse for å utføre tilleggsoppgaver.

I dette eksemplet vil jeg sjekke om E: eportsprocesses.txt eksisterer, og hvis den eksisterer, vil jeg kopiere filen til C: eports. Her er manuset som skal gjøre jobben.

Det anbefales å kjøre denne kommandoen inn PowerShell ISE |_+_|

Her er resultatet i PowerShell ISE og filen kopiert i C: eports

Slik bruker du PowerShell for å sjekke om en fil eksisterer

Jeg kan gjøre skriptet smartere ved å legge til to ekstra linjer.

|_+_|

og….

|_+_| Den første kommandoen ovenfor viser en melding hvis filen er kopiert. Den andre viser en melding om at filen ikke eksisterer.

Her er det modifiserte manuset...

|_+_|

Slik bruker du PowerShell for å sjekke om en fil eksisterer med en variabel

Slik bruker du PowerShell for å sjekke om en fil eksisterer med en variabel

I den siste delen viste jeg deg hvordan du bruker PowerShell for å sjekke om en fil eksisterer uten å bruke variabler. I denne delen vil jeg lagre resultatet av Test-Path i en variabel. Bruk deretter variabelen i an HVIS uttalelse.

I eksemplet i denne delen vil jeg sjekke om first-file.txt finnes i banen vist på bildet nedenfor. Så, hvis den eksisterer, vil jeg kopiere filen til C:PS

Hvordan bruke PowerShell for å sjekke om en fil eksisterer med en variabel

I de første trinnene vil jeg kjøre kommandoen nedenfor:

|_+_|

Denne kommandoen er den samme som den forrige med én forskjell – resultatet av kommandoen lagres i Filen eksisterer variabel.

Hvordan bruke PowerShell for å sjekke om en fil eksisterer med en variabel

Hvordan bruke PowerShell for å sjekke om en fil eksisterer og kopiere den

Da jeg introduserte denne delen, lagret jeg utdataene fra Test-Path kommando til Filen eksisterer variabel.

|_+_|

I denne underdelen vil jeg lære deg hvordan du kopierer filen hvis den eksisterer. For å gjøre dette vil jeg introdusere HVIS uttalelse med Kopi-element kommando.

|_+_|

Her er hele skriptet med de kombinerte kommandoene:

|_+_|

Og her er skriptet i PowerShell ISE.

Hvordan bruke PowerShell for å sjekke om en fil eksisterer og slette den

I den siste underdelen så du hvordan du sjekker om en fil eksisterer og kopierer filen. Hva om du vil kopiere filen i stedet?

Hvis du vil slette filen i stedet for å kopiere den, erstatt Kopi-element kommando med Fjerne gjenstand kommando.

Her er det oppdaterte skriptet som bruker PowerShell IF-setningen for å sjekke om en fil eksisterer. Så, hvis den eksisterer, slett den...

|_+_|

Slik bruker du PowerShell for å sjekke om det finnes en fil ellers Avslutt

I noen PowerShell-skriptsituasjoner kan det være lurt å sjekke om det finnes en fil. Deretter, hvis den eksisterer, utfør en spesifisert oppgave – som kopier eller slett filen – ellers går du ut av skriptet.

For å oppnå dette, er alt du trenger å gjøre å legge til Ellers blokk av Hvis uttalelse.

I den siste underseksjonen brukte jeg dette skriptet til å slette en fil hvis den eksisterer.

|_+_|

Hvis jeg vil at skriptet skal avsluttes hvis filen ikke eksisterer, vil jeg endre skriptet som vist nedenfor...

|_+_|

Her er logikken til det modifiserte skriptet ...

Sjekk om filen E: eportsfirst-file.txt eksisterer. Hvis den finnes, slett filen.

Men hvis filen ikke eksisterer, kjør kommandoen i Ellers blokk av Hvis uttalelse. I dette tilfellet vil kommandoen i Ellers løkke er ordet, Gå i stykker .

Gå i stykker ber PowerShell om å slutte å behandle skriptet. Du kan også legge til Gå i stykker på If-blokken i setningen – under kommandoen Remove-Item...

|_+_|

Slik bruker du PowerShell for å sjekke om en fil eksisterer og ikke er tom

Dette er nok en tilstand som er vanlig i PowerShell-skripting - å sjekke om en fil eksisterer og ikke er tom. Dette kan være aktuelt for loggfiler.

Hvis du for eksempel har et program som oppretter og oppdaterer loggfiler, kan du skrive et PowerShell-skript som sjekker at nye loggfiler er oppdatert.

Gå videre, for å teste om en fil eksisterer, bruker du Test-Path kommando. Men for å sjekke om filen er tom, må du introdusere en annen kommando, Get-ChildItem .

I dette scenariet kan du bruke Get-ChildItem kommando på to måter.

en , hvis du vil sjekke om en enkelt fil er tom, kan du kjøre Get-ChildItem kommandoen ved å bruke hele filbanen som Sti parameter. to , alternativt, hvis du vil sjekke en haug med filer i en mappe, bruk mappebanen som Sti parameter.

I denne delen vil jeg gi et eksempel som sjekker om en spesifikk fil eksisterer og er tom. Jeg vil dekke det andre alternativet i Slik bruker du PowerShell for å sjekke om det finnes en fil og en mappe avsnittet senere i denne veiledningen.

I dette eksemplet vil jeg sjekke om filen, first-file.txt og hvis den er tom.

Slik bruker du PowerShell for å sjekke om en fil eksisterer og ikke er tom

Som jeg nevnte tidligere, er det første trinnet å kjøre Get-ChildItem kommandoen ved å bruke hele filbanen som Sti parameter. For å begynne, kjør kommandoen nedenfor...

cm 13 note 4
|_+_|

Her er resultatet av kommandoen. Fra resultatet av kommandoen kan du se at filen har en egenskap kalt Lengde .

Effektivt er Lengde egenskapen til en fil viser størrelsen på filen. Dessuten, hvis en fil er tom, vil den Lengde vil være null (0).

Så for å bruke PowerShell til å sjekke om ikke er tom, vil vi sjekke om Lengde er IKKE null (0).

For å oppnå dette vil jeg endre den siste kommandoen som vist nedenfor ...

|_+_|

Her er resultatet av kommandoen i PowerShell. I dette tilfellet, fordi størrelsen på filen min er 0 (tom), returnerte kommandoen falsk .

Slik bruker du PowerShell for å sjekke om en fil eksisterer og ikke er tom

Dette betyr at denne filen er tom.

Men hvordan inkluderer vi biten som tester om filen eksisterer? Glad du spurte!

For å introdusere logikken som bruker PowerShell til å sjekke om en fil eksisterer og også sjekke at filen IKKE er tom, vil jeg kombinere deler av vårt forrige skript og Get-ChildItem kommandoen ovenfor.

Her er mitt modifiserte manus...

|_+_|

I denne modifiserte versjonen av skriptet gjorde jeg følgende endringer...

  1. I linje 2 lagret jeg Get-ChildItem kommando som sjekker om en fil er tom – i en variabel kalt $checkiffileisempty .
|_+_|
  1. Så, i linje 3 la jeg til en annen betingelse til Hvis uttalelse. Tilstandsdelen av Hvis setningen ble oppdatert til If (($fileexists -eq $True) -og ($checkiffileisempty -eq $False)).

    Denne tilstanden tester om det er lagret i $fileeksisterer er ekte (Filen eksisterer). Videre sjekker den om det som er lagret i $checkiffileisempt er Falsk (filen er tom).

    PowerShell sjekker effektivt om Test-Path kommandoen som sjekket om filbanen eksisterer er ekte . I tillegg sjekker den også om Get-ChildItem kommando som sjekker om filen IKKE er tom er Falsk (som betyr at filen er tom)
  2. Til slutt, hvis begge betingelsene er oppfylt, i linje 4, vil PowerShell utføre kommandoen i {}-parentesen til If-setningen.

    I dette eksemplet har jeg denne kommandoen i {}-parentesen til If-setningen.
|_+_|

Kommandoen legger til teksten i Verdi parameter av Sett-innhold kommando.

For å teste at skriptet fungerer, kopier det til PowerShell ISE og kjør skriptet...

Slik bruker du PowerShell for å sjekke om en fil eksisterer og ikke er tom

Når jeg kjørte skriptet, filen, first-file.txt – som tidligere var tomt – har nå noen verdier i seg. I tillegg er filstørrelsen ikke lenger null (0)!

Slik bruker du PowerShell for å sjekke om en fil finnes i en mappe

Slik bruker du PowerShell for å sjekke om en fil finnes i en mappe

Så langt har denne veiledningen dekket flere scenarier for å bruke PowerShell for å sjekke om en fil eksisterer.

I denne delen ønsker jeg å dykke dypt inn i mapper. Nærmere bestemt vil du lære hvordan du sjekker om en fil finnes i gjeldende mappe eller i alle undermapper.

I tillegg vil du lære hvordan du bruker PowerShell for å sjekke om en fil finnes i flere mapper. Til slutt vil jeg vise deg hvordan du bruker et jokertegn for å sjekke om en fil eksisterer.

Slik bruker du PowerShell for å sjekke om en fil finnes i gjeldende mappe

I dette første eksemplet vil du lære hvordan du sjekker om en fil finnes i gjeldende mappe – unntatt alle undermapper.

I dette eksemplet vil jeg sjekke om filer med filtypen .log finnes i mappen E: eports. Jeg ønsker imidlertid å ekskludere alle undermapper.

Det første trinnet er å kjøre Get-ChildItem kommando. Rør deretter utgangen til Hvor-objekt og filtrer etter PSIsContainer eiendom.

De PSIsContainer egenskap er en egenskap som definerer mapper eller kataloger. I Hvor-objekt kommandoen spesifiserte jeg $_.PSIsContainer -ne $true. Denne kommandoen sier ganske enkelt Ikke returner noen vare hvis den er PSIsContainer eiendom er sann. Dette vil kun returnere filer.

Her er kommandoen...

|_+_|

Og her er resultatet i PowerShell...

Slik bruker du PowerShell for å sjekke om en fil finnes i gjeldende mappe

Det siste trinnet er å returnere hele banen til alle filer med .log-utvidelsen i gjeldende mappe.

Her er kommandoen...

|_+_|

Og resultatet…

Fra dette tidspunktet, hvis du vil utføre ytterligere oppgaver på filene, kan du overføre utdataene fra det siste resultatet til en For hver Løkke. Deretter, innenfor For hver loop, kan du kjøre flere kommandoer.

Slik bruker du PowerShell for å sjekke om en fil finnes i undermapper

Hvis du vil sjekke om en bestemt fil eller filer finnes i alle undermapper, ikke i gjeldende mappe, må du gjøre små endringer i Get-ChildItem kommando.

Nærmere bestemt når du rører Get-ChildItem kommando, inn Hvor-objekt , filtrerer du Hvor-objekt for kun å returnere mapper.

|_+_|

Kommandoen returnerer hele banen til alle undermappene i den angitte mappen...

I neste trinn må du bruke For hver setning for å iterere gjennom alle mappene som ble returnert av den siste kommandoen. Deretter, innenfor For hver uttalelse, kjøre en annen Get-ChildItem kommando mot hver undermappe.

Det finnes tre varianter av For hver men i dette eksemplet vil jeg bruke For hver -Objekt Cmdlet.

bluestacks 3 root-tilgang
|_+_|

Kommandoen viser alle loggfilene i undermappene...

Slik bruker du PowerShell for å sjekke om en fil finnes i undermapper

Slik bruker du PowerShell for å sjekke om en fil eksisterer gjeldende mappe og alle undermapper

I de to siste underavsnittene brukte jeg PSIsContainer egenskap for enten å filtrere ut undermapper, eller bare returnere undermapper. I dette eksemplet vil jeg eliminere PSIsContainer eiendom.

Jeg vil imidlertid introdusere en Get-ChildItem kommandoparameter, kalt Gjentakelse . De Gjentakelse parameterkrefter Get-ChildItem for å sjekke den angitte mappen og alle dens undermapper.

Her er modifisert script.

|_+_|

De Gjentakelse parameteren er introdusert i den første Get-ChildItem kommando. Det er ikke nødvendig i den andre Get-ChildItem kommando (innenfor For hvert objekt blokkere).

Her er resultatet av kommandoen. Denne gangen inkluderer rapporten alle loggfilene i toppmappen og alle undermappene.

Slik bruker du PowerShell for å sjekke om det finnes en fil på en ekstern datamaskin

Slik bruker du PowerShell for å sjekke om det finnes en fil på en ekstern datamaskin

Hvis du vil teste om en fil finnes på en ekstern datamaskin, kan du bruke det samme prinsippet som er omtalt i alle eksemplene i denne veiledningen.

Du må imidlertid introdusere en ny kommando kalt Påkalle-kommando . Deretter, innenfor Påkalle-kommando kommando, bruk dens ScriptBlock parameter for å spesifisere en av kommandoene vi diskuterte tidligere i denne veiledningen.

En annen viktig ting å merke seg er at du kanskje må spesifisere et brukernavn og passord for en konto med tillatelse til å koble til den eksterne datamaskinen.

I tillegg bør den angitte kontoen ha tillatelse til å kjøre kommandoen i ScriptBlock parameter – på den eksterne datamaskinen.

Til slutt, bruk Datamaskinnavn parameter for å angi navnet på den eksterne datamaskinen.

For din referanse, her er den generelle syntaksen til Påkalle-kommando kommando.

|_+_|

For å lese mer om Påkalle-kommando kommando, se Referanser og videre lesing på slutten av denne veiledningen.

If hope var jeg i stand til å lære deg hvordan du bruker PowerShell for å sjekke om en fil eksisterer!

Jeg håper også du syntes at S-sonen var nyttig. Hvis du synes det var nyttig, vennligst stem Ja til spørsmålet Var dette innlegget nyttig nedenfor.

Alternativt kan du stille et spørsmål, legge igjen en kommentar eller gi tilbakemelding med Legg igjen et svar-skjemaet på slutten av denne siden.

Til slutt, for flere e-postteknologiske S-soner, besøk vår Windows PowerShell-veiledningsside. Du kan også finne vår Work from Home-side veldig nyttig.

Referanser og videre lesning

  1. Påkalle-kommando
  2. Powershell hvis annet forklart: Syntaks og eksempler
  3. Get-ChildItem
  4. Test-Path