Hur man använder PowerShell för att kontrollera om en fil finns

28 maj 2021 35296 Visningar powershell kontrollera om filen finns

I den här S-zonen lär Victor dig hur du använder PowerShell för att kontrollera om en fil finns. Guiden täcker flera exempel för att använda PowerShell för att kontrollera om en fil finns.





För att använda PowerShell för att kontrollera om en fil finns, använder du Test-Path Cmdlet. Du kan dock antingen ange filsökvägen direkt till Test-Path kommando eller spara filen i en variabel. Använd sedan variabeln i Test-Path .



Bläddra bland inläggsämnen

Hur man använder PowerShell för att kontrollera om en fil finns utan en variabel

Hur man använder PowerShell för att kontrollera om en fil finns utan en variabel

Det här avsnittet lär dig hur du springer Test-Path kommando utan variabel.



Du kan köra Test-Path som ett fristående kommando. Dessutom kan du också kombinera kommandot med en OM uttalande att utföra ytterligare uppgifter baserat på resultatet av Test-Path kommando.



Hur man kör Test-Path direkt utan en variabel

Det här underavsnittet lär dig hur du kör Test-Path ensam (utan att använda resultatet i en OM påstående).

Återställ säkerhetsprocessorn

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



Hur man använder PowerShell för att kontrollera om en fil finns

För att kontrollera om filen finns, skriv in kommandot nedan i PowerShell och tryck på enter



|_+_|

När jag tryckte på kom PowerShell tillbaka Sann , vilket betyder att filen finns.

Hur man använder PowerShell för att kontrollera om en fil finns

Men om jag kör samma kommando för en fil som inte finns, returnerar PowerShell Falsk .

Hur man använder PowerShell för att kontrollera om en fil finns

Hur man kombinerar testväg och IF-uttalande utan en variabel

Som jag nämnde tidigare, efter att ha använt PowerShell Test-Path för att kontrollera om en fil finns, kan du använda resultatet i en OM uttalande för att utföra tilläggsuppgifter.

I det här exemplet kommer jag att kontrollera om E: eportsprocesses.txt finns och om det finns kommer jag att kopiera filen till C: eports. Här är manuset som kommer att göra jobbet.

Det rekommenderas att köra detta kommando i PowerShell ISE |_+_|

Här är resultatet i PowerShell ISE och filen kopierad i C: eports

Hur man använder PowerShell för att kontrollera om en fil finns

Jag kan göra skriptet smartare genom att lägga till ytterligare två rader.

|_+_|

och….

|_+_| Det första kommandot ovan visar ett meddelande om filen är kopierad. Den andra visar ett meddelande om att filen inte finns.

Här är det modifierade skriptet...

|_+_|

Hur man använder PowerShell för att kontrollera om en fil finns med en variabel

Hur man använder PowerShell för att kontrollera om en fil finns med en variabel

I det sista avsnittet visade jag hur du använder PowerShell för att kontrollera om en fil finns utan att använda variabler. I det här avsnittet kommer jag att spara resultatet av Test-Path i en variabel. Använd sedan variabeln i an OM påstående.

I exemplet i det här avsnittet vill jag kontrollera om first-file.txt finns i sökvägen som visas i bilden nedan. Sedan, om den finns, kopierar jag filen till C:PS

Hur man använder PowerShell för att kontrollera om en fil finns med en variabel

I de första stegen kommer jag att köra kommandot nedan:

|_+_|

Detta kommando är detsamma som det förra med en skillnad - resultatet av kommandot sparas i fil existerar variabel.

Hur man använder PowerShell för att kontrollera om en fil finns med en variabel

Hur man använder PowerShell för att kontrollera om en fil finns och kopiera den

När jag introducerade det här avsnittet sparade jag utdata från Test-Path kommando till fil existerar variabel.

|_+_|

I det här underavsnittet kommer jag att lära dig hur du kopierar filen om den finns. För att göra detta kommer jag att presentera OM uttalande med Copy-Item kommando.

|_+_|

Här är hela skriptet med de kombinerade kommandona:

|_+_|

Och här är skriptet i PowerShell ISE.

Hur man använder PowerShell för att kontrollera om en fil finns och ta bort den

I det sista underavsnittet såg du hur du kontrollerar om en fil finns och kopierar filen. Vad händer om du vill kopiera filen istället?

Om du vill ta bort filen istället för att kopiera den, ersätt Copy-Item kommandot med Ta bort sak kommando.

Här är det uppdaterade skriptet som använder PowerShell IF-satsen för att kontrollera om en fil finns. Sedan, om det finns, ta bort det...

|_+_|

Hur man använder PowerShell för att kontrollera om det finns en fil annars Avsluta

I vissa PowerShell-skriptsituationer kanske du vill kontrollera om en fil finns. Sedan, om det finns, utför en specificerad uppgift – som att kopiera eller ta bort filen – annars avslutar du skriptet.

För att uppnå detta behöver du bara lägga till Annan block av Om påstående.

I det sista underavsnittet använde jag det här skriptet för att ta bort en fil om den finns.

|_+_|

Om jag vill att skriptet ska avslutas om filen inte finns, kommer jag att ändra skriptet enligt nedan...

|_+_|

Här är logiken i det modifierade skriptet...

Kontrollera om filen E: eportsfirst-file.txt finns. Om den finns, radera filen.

Men om filen inte finns, kör kommandot i Annan block av Om påstående. I det här fallet, kommandot i Annan slinga är ordet, Ha sönder .

Ha sönder säger till PowerShell att sluta bearbeta skriptet. Du kan också lägga till Ha sönder på If-blocket i uttalandet – under kommandot Remove-Item...

|_+_|

Hur man använder PowerShell för att kontrollera om en fil finns och inte är tom

Detta är ytterligare ett tillstånd som är vanligt i PowerShell-skript - att kontrollera om en fil finns och inte är tom. Detta kan vara tillämpligt för loggfiler.

hur man loggar ut från spelcentret på ipad

Om du till exempel har ett program som skapar och uppdaterar loggfiler kan du skriva ett PowerShell-skript som kontrollerar att nya loggfiler uppdateras.

Gå vidare, för att testa om en fil finns, använder du Test-Path kommando. Men för att kontrollera om filen är tom måste du införa ett annat kommando, Get-ChildItem .

I det här scenariot kan du använda Get-ChildItem kommando på två sätt.

ett , om du vill kontrollera om en enskild fil är tom kan du köra Get-ChildItem kommandot, med den fullständiga sökvägen som Väg parameter. två , alternativt, om du vill kontrollera ett gäng filer i en mapp, använd mappsökvägen som Väg parameter.

I det här avsnittet kommer jag att ge ett exempel som kontrollerar om en specifik fil finns och är tom. Jag kommer att täcka det andra alternativet i Hur man använder PowerShell för att kontrollera om en fil finns en en mapp avsnittet längre fram i den här guiden.

I det här exemplet vill jag kontrollera om filen, first-file.txt och om det är tomt.

Hur man använder PowerShell för att kontrollera om en fil finns och inte är tom

Som jag nämnde tidigare är det första steget att köra Get-ChildItem kommandot, med den fullständiga sökvägen som Väg parameter. För att börja, kör kommandot nedan...

|_+_|

Här är resultatet av kommandot. Från resultatet av kommandot kan du se att filen har en egenskap som kallas Längd .

Effektivt Längd egenskapen för en fil visar storleken på filen. Dessutom, om en fil är tom, Längd blir noll (0).

Så för att använda PowerShell för att kontrollera om inte är tomt, kommer vi att kontrollera om Längd är INTE noll (0).

För att uppnå detta kommer jag att ändra det sista kommandot som visas nedan...

|_+_|

Här är resultatet av kommandot i PowerShell. I det här fallet, eftersom storleken på min fil är 0 (tom), returnerades kommandot falsk .

Hur man använder PowerShell för att kontrollera om en fil finns och inte är tom

Det betyder att den här filen är tom.

Men hur inkluderar vi biten som testar om filen finns? Kul att du frågade!

För att introducera logiken som använder PowerShell för att kontrollera om en fil finns och även kontrollera att filen INTE är tom, kommer jag att kombinera delar av vårt tidigare skript och Get-ChildItem kommandot ovan.

Här är mitt modifierade manus...

|_+_|

I den här modifierade versionen av skriptet gjorde jag följande ändringar...

  1. På rad 2 sparade jag Get-ChildItem kommando som kontrollerar om en fil är tom – i en variabel som kallas $checkiffileisempty .
|_+_|
  1. Sedan, i rad 3 lade jag till ett annat villkor till Om påstående. Tillståndsdelen av Om uttalandet uppdaterades till If (($fileexists -eq $True) -och ($checkiffileisempty -eq $False)).

    Detta tillstånd testar om vad som sparas i $fileexists är Sann (fil existerar). Dessutom kontrollerar den om det som sparas i $checkiffileisempt är Falsk (filen är tom).

    PowerShell kontrollerar effektivt om Test-Path kommandot som kontrollerade om filsökvägen finns är Sann . Dessutom kontrollerar den också om Get-ChildItem kommando som kontrollerar om filen INTE är tom är Falsk (vilket betyder att filen är tom)
  2. Slutligen, om båda villkoren är uppfyllda, på rad 4, kommer PowerShell att utföra kommandot inom {}-parentesen i If-satsen.

    I det här exemplet har jag det här kommandot i parentesen {} i If-satsen.
|_+_|

Kommandot lägger till texten i Värde parameter för Set-Content kommando.

För att testa att skriptet fungerar, kopiera det till PowerShell ISE och kör skriptet...

Hur man använder PowerShell för att kontrollera om en fil finns och inte är tom

När jag körde skriptet, filen, first-file.txt – som tidigare var tomt – har nu några värden i sig. Dessutom är filstorleken inte längre noll (0)!

Hur man använder PowerShell för att kontrollera om en fil finns i en mapp

Hur man använder PowerShell för att kontrollera om en fil finns i en mapp

Hittills har den här guiden täckt flera scenarier för att använda PowerShell för att kontrollera om en fil finns.

I det här avsnittet vill jag dyka djupt ner i mappar. Specifikt kommer du att lära dig hur du kontrollerar om en fil finns i den aktuella mappen eller i alla undermappar.

Dessutom kommer du att lära dig hur du använder PowerShell för att kontrollera om en fil finns i flera mappar. Slutligen kommer jag att visa dig hur du använder ett jokertecken för att kontrollera om en fil finns.

Hur man använder PowerShell för att kontrollera om en fil finns i den aktuella mappen

I det här första exemplet kommer du att lära dig hur du kontrollerar om en fil finns i den aktuella mappen – exklusive alla undermappar.

I det här exemplet vill jag kontrollera om filer med filtillägget .log finns i mappen E: eports. Jag vill dock utesluta alla undermappar.

Det första steget är att köra Get-ChildItem kommando. Led sedan utgången till Var-Objekt och filtrera efter PSIsContainer fast egendom.

De PSIsContainer egenskap är en egenskap som definierar mappar eller kataloger. I den Var-Objekt kommandot angav jag $_.PSIsContainer -ne $true. Detta kommando säger helt enkelt Returnera inte något objekt om det är PSIsContainer egendom är Sann. Detta returnerar endast filer.

Här är kommandot...

|_+_|

Och här är resultatet i PowerShell...

Hur man använder PowerShell för att kontrollera om en fil finns i den aktuella mappen

Det sista steget är att returnera den fullständiga sökvägen för alla filer med tillägget .log i den aktuella mappen.

Här är kommandot...

|_+_|

Och resultatet...

Från denna punkt, om du vill utföra ytterligare uppgifter på filerna, kan du överföra utdata från det senaste resultatet till en För varje slinga. Sedan, inom För varje loop kan du köra ytterligare kommandon.

Hur man använder PowerShell för att kontrollera om en fil finns i undermappar

Om du vill kontrollera om en specifik fil eller filer finns i alla undermappar, inte i den aktuella mappen, måste du göra små ändringar i Get-ChildItem kommando.

Närmare bestämt när du rör Get-ChildItem kommando, in i Var-Objekt , du filtrerar Var-Objekt för att endast returnera mappar.

|_+_|

Kommandot returnerar den fullständiga sökvägen till alla undermappar i den angivna mappen...

I nästa steg måste du använda För varje uttalande för att iterera genom alla mappar som returneras av det sista kommandot. Sedan, inom För varje uttalande, kör en annan Get-ChildItem kommando mot varje undermapp.

Det finns tre varianter av För varje men i det här exemplet kommer jag att använda För varje -Objekt Cmdlet.

|_+_|

Kommandot visar alla loggfiler i undermapparna...

Hur man använder PowerShell för att kontrollera om en fil finns i undermappar

Hur man använder PowerShell för att kontrollera om en fil finns aktuell mapp och alla undermappar

I de två sista underavsnitten använde jag PSIsContainer egenskap för att antingen filtrera bort undermappar eller endast returnera undermappar. I det här exemplet kommer jag att eliminera PSIsContainer fast egendom.

Jag kommer dock att introducera en Get-ChildItem kommandoparameter, anropad Återfall . De Återfall parameterkrafter Get-ChildItem för att kontrollera den angivna mappen och alla dess undermappar.

Här är modifierat script.

dyster gryning starkaste byggnader
|_+_|

De Återfall parametern introduceras i den första Get-ChildItem kommando. Det krävs inte i den andra Get-ChildItem kommandot (inom För varje objekt blockera).

Här är resultatet av kommandot. Den här gången inkluderar rapporten alla loggfiler i den översta mappen och alla dess undermappar.

Hur man använder PowerShell för att kontrollera om en fil finns i en fjärrdator

Hur man använder PowerShell för att kontrollera om en fil finns i en fjärrdator

Om du vill testa om en fil finns på en fjärrdator kan du tillämpa samma princip som diskuteras i alla exempel i den här guiden.

Du måste dock introducera ett nytt kommando som heter Anropa-kommando . Sedan, inom Anropa-kommando kommando, använd dess ScriptBlock parameter för att specificera ett av kommandona som vi diskuterade tidigare i den här guiden.

En annan viktig sak att notera är att du kan behöva ange ett användarnamn och lösenord för ett konto med behörighet att ansluta till fjärrdatorn.

Dessutom bör det angivna kontot ha behörighet att köra kommandot i ScriptBlock parameter – på fjärrdatorn.

Använd slutligen Datornamn parameter för att ange namnet på fjärrdatorn.

För din referens, här är den allmänna syntaxen för Anropa-kommando kommando.

|_+_|

För att läsa mer om Anropa-kommando kommando, se Referenser och ytterligare läsning i slutet av den här guiden.

If hope jag kunde framgångsrikt lära dig hur du använder PowerShell för att kontrollera om en fil finns!

Jag hoppas också att du tyckte att S-zonen var till hjälp. Om du tyckte att det var användbart, vänligen rösta Ja till frågan Var detta inlägg användbar nedan.

Alternativt kan du ställa en fråga, lämna en kommentar eller ge feedback med formuläret Lämna ett svar som finns i slutet av denna sida.

Slutligen, för fler e-posttekniska S-zoner, besök vår Windows PowerShell-instruktionssida. Vår Work from Home-sida kan också vara till stor hjälp.

Referenser och vidare läsning

  1. Anropa-kommando
  2. Powershell om annat förklaras: syntax och exempel
  3. Get-ChildItem
  4. Test-Path