Sådan bruger du PowerShell til at kontrollere, om der findes en fil

28. maj 2021 35296 Visninger powershell check om filen findes

I denne S-zone lærer Victor dig, hvordan du bruger PowerShell til at kontrollere, om der findes en fil. Vejledningen dækker flere eksempler på brug af PowerShell til at kontrollere, om der findes en fil.





For at bruge PowerShell til at kontrollere, om der findes en fil, skal du bruge Test-sti Cmdlet. Du kan dog enten indtaste filstien direkte til Test-sti kommando eller gem filen i en variabel. Brug derefter variablen i Test-sti .



Gennemse indlægsemner

Sådan bruger du PowerShell til at kontrollere, om en fil eksisterer uden en variabel

Sådan bruger du PowerShell til at kontrollere, om en fil eksisterer uden en variabel

Dette afsnit lærer dig, hvordan du løber Test-sti kommando uden en variabel.



Du kan køre Test-Path som en selvstændig kommando. Desuden kan du også kombinere kommandoen med en HVIS erklæring om at udføre yderligere opgaver baseret på resultatet af Test-sti kommando.



Sådan køres teststien direkte uden en variabel

Dette underafsnit lærer dig, hvordan du kører Test-Path alene (uden at bruge resultatet i en HVIS udmelding).

Jeg har en fil kaldet processes.txt i E: eports.



Sådan bruger du PowerShell til at kontrollere, om der findes en fil

For at kontrollere, om filen findes, skal du indtaste kommandoen nedenfor i PowerShell og trykke på enter



|_+_|

Da jeg trykkede, vendte PowerShell tilbage Rigtigt , hvilket betyder, at filen eksisterer.

Sådan bruger du PowerShell til at kontrollere, om der findes en fil

Men hvis jeg kører den samme kommando for en fil, der ikke eksisterer, vender PowerShell tilbage Falsk .

Sådan bruger du PowerShell til at kontrollere, om der findes en fil

Sådan kombinerer du teststi og IF-erklæring uden en variabel

Som jeg nævnte tidligere, efter at have brugt PowerShell Test-Path til at kontrollere, om en fil eksisterer, kan du bruge resultatet i en HVIS erklæring til at udføre tilføjelsesopgaver.

I dette eksempel vil jeg kontrollere, om E: eportsprocesses.txt eksisterer, og hvis det findes, vil jeg kopiere filen til C: eports. Her er scriptet, der vil gøre jobbet.

Det anbefales at køre denne kommando ind PowerShell ISE |_+_|

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

Sådan bruger du PowerShell til at kontrollere, om der findes en fil

Jeg kan gøre scriptet smartere ved at tilføje to ekstra linjer.

|_+_|

og….

|_+_| Den første kommando ovenfor viser en meddelelse, hvis filen er kopieret. Den anden viser en meddelelse om, at filen ikke eksisterer.

Her er det ændrede script...

|_+_|

Sådan bruger du PowerShell til at kontrollere, om der findes en fil med en variabel

Sådan bruger du PowerShell til at kontrollere, om der findes en fil med en variabel

I det sidste afsnit viste jeg dig, hvordan du bruger PowerShell til at kontrollere, om en fil eksisterer uden at bruge variabler. I dette afsnit vil jeg gemme resultatet af Test-Path i en variabel. Brug derefter variablen i an HVIS udmelding.

I eksemplet i dette afsnit vil jeg tjekke om first-file.txt findes i stien vist på billedet nedenfor. Så, hvis den findes, kopierer jeg filen til C:PS

Sådan bruger du PowerShell til at kontrollere, om der findes en fil med en variabel

I de første trin vil jeg køre kommandoen nedenfor:

|_+_|

Denne kommando er den samme som den sidste med en forskel - resultatet af kommandoen gemmes i fil findes variabel.

Sådan bruger du PowerShell til at kontrollere, om der findes en fil med en variabel

Sådan bruger du PowerShell til at kontrollere, om der findes en fil, og kopiere den

Da jeg introducerede dette afsnit, gemte jeg outputtet fra Test-sti kommando til fil findes variabel.

|_+_|

I dette underafsnit vil jeg lære dig, hvordan du kopierer filen, hvis den findes. For at gøre dette vil jeg introducere HVIS erklæring med Kopi-vare kommando.

|_+_|

Her er det fulde script med de kombinerede kommandoer:

|_+_|

Og her er scriptet i PowerShell ISE.

Sådan bruger du PowerShell til at kontrollere, om der findes en fil, og slette den

I det sidste underafsnit så du, hvordan du kontrollerer, om en fil eksisterer, og kopierer filen. Hvad hvis du vil kopiere filen i stedet for?

Hvis du vil slette filen i stedet for at kopiere den, skal du erstatte Kopi-vare kommando med Fjern-vare kommando.

Her er det opdaterede script, der bruger PowerShell IF-sætning til at kontrollere, om der findes en fil. Så, hvis den findes, skal du slette den...

|_+_|

Sådan bruger du PowerShell til at kontrollere, om der findes en fil ellers Afslut

I nogle PowerShell-scriptsituationer vil du måske kontrollere, om der findes en fil. Så, hvis den findes, skal du udføre en specificeret opgave – f.eks. kopiere eller slette filen – ellers skal du afslutte scriptet.

For at opnå dette skal du blot tilføje Andet blok af Hvis udmelding.

I det sidste underafsnit brugte jeg dette script til at slette en fil, hvis den eksisterer.

.bin til .iso
|_+_|

Hvis jeg vil have scriptet til at afslutte, hvis filen ikke eksisterer, vil jeg ændre scriptet som vist nedenfor...

|_+_|

Her er logikken i det modificerede script...

Tjek om filen E: eportsfirst-file.txt findes. Hvis den findes, skal du slette filen.

Men hvis filen ikke eksisterer, skal du køre kommandoen i Andet blok af Hvis udmelding. I dette tilfælde vil kommandoen i Andet sløjfe er ordet, Pause .

Pause fortæller PowerShell at stoppe med at behandle scriptet. Du kan også tilføje Pause på If-blokken i sætningen – under kommandoen Remove-Item...

|_+_|

Sådan bruges PowerShell til at kontrollere, om en fil eksisterer og ikke er tom

Dette er endnu en tilstand, der er almindelig i PowerShell-scripting - at kontrollere, om en fil eksisterer og ikke er tom. Dette kan være relevant for logfiler.

For eksempel, hvis du har et program, der opretter og opdaterer logfiler, kan du skrive et PowerShell-script, der kontrollerer, at nye logfiler er opdateret.

Går du videre, for at teste om en fil eksisterer, bruger du Test-sti kommando. Men for at kontrollere, om filen er tom, skal du indføre en anden kommando, Get-ChildItem .

I dette scenarie kan du bruge Get-ChildItem kommando på to måder.

en , hvis du vil kontrollere, om en enkelt fil er tom, kan du køre Get-ChildItem kommando ved at bruge den fulde filsti som Sti parameter. to , alternativt, hvis du vil kontrollere en masse filer i en mappe, skal du bruge mappestien som Sti parameter.

I dette afsnit vil jeg give et eksempel, der kontrollerer, om en specifik fil eksisterer og er tom. Jeg vil dække den anden mulighed i Sådan bruger du PowerShell til at kontrollere, om der findes en fil og en mappe afsnit senere i denne vejledning.

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

Sådan bruges PowerShell til at kontrollere, om en fil eksisterer og ikke er tom

Som jeg nævnte tidligere, er det første skridt at køre Get-ChildItem kommando ved at bruge den fulde filsti som Sti parameter. For at begynde skal du køre kommandoen nedenfor...

|_+_|

Her er resultatet af kommandoen. Fra resultatet af kommandoen kan du se, at filen har en egenskab kaldet Længde .

Effektivt er Længde egenskaben for en fil viser størrelsen af ​​filen. Desuden, hvis en fil er tom, Længde vil være nul (0).

Så for at bruge PowerShell til at kontrollere, om ikke er tom, vil vi kontrollere, om Længde er IKKE nul (0).

For at opnå dette vil jeg ændre den sidste kommando som vist nedenfor...

|_+_|

Her er resultatet af kommandoen i PowerShell. I dette tilfælde, fordi størrelsen på min fil er 0 (tom), returnerede kommandoen falsk .

Sådan bruges PowerShell til at kontrollere, om en fil eksisterer og ikke er tom

Det betyder, at denne fil er tom.

Men hvordan inkluderer vi den bit, der tester, om filen eksisterer? Godt du spurgte!

For at introducere logikken, der bruger PowerShell til at kontrollere, om en fil eksisterer, og også kontrollere, at filen IKKE er tom, vil jeg kombinere dele af vores tidligere script og Get-ChildItem kommandoen ovenfor.

Her er mit ændrede script...

|_+_|

I denne ændrede version af scriptet lavede jeg følgende ændringer...

  1. I linje 2 gemte jeg Get-ChildItem kommando, der kontrollerer, om en fil er tom – i en variabel kaldet $checkiffileisempty .
|_+_|
  1. Så i linje 3 tilføjede jeg en anden betingelse til Hvis udmelding. Tilstandsdelen af Hvis sætningen blev opdateret til If (($fileexists -eq $True) -og ($checkiffileisempty -eq $False)).

    Denne tilstand tester, om hvad der er gemt i $file eksisterer er Rigtigt (filen findes). Ydermere tjekker den, om det, der er gemt i $checkiffileisempt er Falsk (filen er tom).

    PowerShell kontrollerer effektivt, om Test-sti kommando, der kontrollerede, om filstien findes, er Rigtigt . Derudover tjekker den også, om Get-ChildItem kommando, der kontrollerer, om filen IKKE er tom, er Falsk (hvilket betyder, at filen er tom)
  2. Til sidst, hvis begge betingelser er opfyldt, i linje 4, vil PowerShell udføre kommandoen i parentesen {} af If-sætningen.

    I dette eksempel har jeg denne kommando i parentesen {} i If-sætningen.
|_+_|

Kommandoen tilføjer teksten i Værdi parameter af Sæt-indhold kommando.

For at teste, at scriptet virker, skal du kopiere det til PowerShell ISE og køre scriptet...

Sådan bruges PowerShell til at kontrollere, om en fil eksisterer og ikke er tom

Når jeg kørte scriptet, filen, first-file.txt – der tidligere var tomt – har nu nogle værdier i sig. Derudover er filstørrelsen ikke længere nul (0)!

Sådan bruger du PowerShell til at kontrollere, om der findes en fil i en mappe

Sådan bruger du PowerShell til at kontrollere, om der findes en fil i en mappe

Indtil videre har denne vejledning dækket flere scenarier for at bruge PowerShell til at kontrollere, om der findes en fil.

I dette afsnit vil jeg dykke dybt ned i mapper. Specifikt vil du lære, hvordan du kontrollerer, om en fil findes i den aktuelle mappe eller i alle undermapper.

Derudover vil du lære, hvordan du bruger PowerShell til at kontrollere, om en fil findes i flere mapper. Til sidst vil jeg vise dig, hvordan du bruger et jokertegn til at kontrollere, om der findes en fil.

Sådan bruger du PowerShell til at kontrollere, om der findes en fil i den aktuelle mappe

I dette første eksempel vil du lære, hvordan du kontrollerer, om en fil findes i den aktuelle mappe – undtagen alle undermapper.

I dette eksempel vil jeg kontrollere, om filer med filtypenavnet .log findes i mappen E: eports. Jeg vil dog udelukke alle undermapper.

Det første skridt er at køre Get-ChildItem kommando. Derefter rør outputtet til Hvor-objekt og filtrer efter PSIsContainer ejendom.

Det PSIsContainer egenskab er en egenskab, der definerer mapper eller mapper. I den Hvor-objekt kommando, jeg specificerede $_.PSIsContainer -ne $true. Denne kommando siger simpelthen ikke returnere nogen vare, hvis dens PSIsContainer ejendom er sandt. Dette vil kun returnere filer.

Her er kommandoen...

|_+_|

Og her er resultatet i PowerShell...

Sådan bruger du PowerShell til at kontrollere, om der findes en fil i den aktuelle mappe

Det sidste trin er at returnere den fulde sti til alle filer med filtypenavnet .log i den aktuelle mappe.

Her er kommandoen...

|_+_|

Og resultatet…

Fra dette tidspunkt, hvis du vil udføre yderligere opgaver på filerne, kan du overføre outputtet fra det sidste resultat til en For hver sløjfe. Derefter inden for For hver loop, kan du køre yderligere kommandoer.

Sådan bruger du PowerShell til at kontrollere, om der findes en fil i undermapper

Hvis du vil kontrollere, om en bestemt fil eller filer findes i alle undermapper, ikke i den aktuelle mappe, skal du foretage små ændringer i Get-ChildItem kommando.

Specifikt, når du rører Get-ChildItem kommando, ind Hvor-objekt , du filtrerer Hvor-objekt for kun at returnere mapper.

|_+_|

Kommandoen returnerer den fulde sti til alle undermapperne i den angivne mappe...

I næste trin skal du bruge For hver sætning for at gentage alle de mapper, der returneres af den sidste kommando. Derefter inden for For hver erklæring, køre en anden Get-ChildItem kommando mod hver undermappe.

Der er tre varianter af For hver men i dette eksempel vil jeg bruge For hver -Objekt Cmdlet.

|_+_|

Kommandoen viser alle logfiler i undermapperne...

Sådan bruger du PowerShell til at kontrollere, om der findes en fil i undermapper

Sådan bruger du PowerShell til at kontrollere, om der findes en aktuel mappe og alle undermapper

I de sidste 2 underafsnit brugte jeg PSIsContainer egenskab til enten at bortfiltrere undermapper eller kun returnere undermapper. I dette eksempel vil jeg eliminere PSIsContainer ejendom.

Jeg vil dog introducere en Get-ChildItem kommandoparameter, kaldet Genfald . Det Genfald parameterkræfter Get-ChildItem for at kontrollere den angivne mappe og alle dens undermapper.

Her er ændret script.

|_+_|

Det Genfald parameter introduceres i den første Get-ChildItem kommando. Det er ikke påkrævet i den anden Get-ChildItem kommando (inden for For hvert objekt blok).

Her er resultatet af kommandoen. Denne gang inkluderer rapporten alle logfiler i den øverste mappe og alle dens undermapper.

Sådan bruges PowerShell til at kontrollere, om der findes en fil på en fjerncomputer

Sådan bruges PowerShell til at kontrollere, om der findes en fil på en fjerncomputer

Hvis du vil teste, om der findes en fil på en fjerncomputer, kan du anvende det samme princip, som er beskrevet i alle eksemplerne i denne vejledning.

Du skal dog introducere en ny kommando kaldet Påkalde-kommando . Derefter inden for Påkalde-kommando kommando, brug dens ScriptBlock parameter for at specificere en af ​​de kommandoer, vi diskuterede tidligere i denne vejledning.

En anden vigtig ting at bemærke er, at du muligvis skal angive et brugernavn og en adgangskode til en konto med tilladelse til at oprette forbindelse til fjerncomputeren.

Derudover skal den angivne konto have tilladelse til at køre kommandoen i ScriptBlock parameter – på fjerncomputeren.

Brug endelig Computernavn parameter for at angive navnet på fjerncomputeren.

Til din reference er her den generelle syntaks for Påkalde-kommando kommando.

|_+_|

For at læse mere om Påkalde-kommando kommando, se Referencer og yderligere læsning i slutningen af ​​denne vejledning.

If hope, jeg var i stand til at lære dig, hvordan du bruger PowerShell til at kontrollere, om der findes en fil!

Jeg håber også, at du fandt S Zone nyttig. Hvis du fandt det nyttigt, så stem venligst Ja til spørgsmålet Var dette indlæg nyttigt nedenfor.

Alternativt kan du stille et spørgsmål, efterlade en kommentar eller give feedback med formularen Efterlad et svar, som findes i slutningen af ​​denne side.

Endelig, for flere e-mail-teknologiske S-zoner, besøg vores Windows PowerShell how-to-side. Du kan også finde vores Work from Home-side meget nyttig.

Referencer og videre læsning

  1. Påkalde-kommando
  2. Powershell hvis andet forklares: Syntaks og eksempler
  3. Get-ChildItem
  4. Test-sti