PowerShell gebruiken om te controleren of een bestand bestaat
In deze S Zone leert Victor je hoe je PowerShell kunt gebruiken om te controleren of een bestand bestaat. De handleiding behandelt meerdere voorbeelden om PowerShell te gebruiken om te controleren of een bestand bestaat.
Om PowerShell te gebruiken om te controleren of een bestand bestaat, gebruik je de Test-pad cmdlet. U kunt echter ofwel het bestandspad rechtstreeks naar de Test-pad commando of sla het bestand op in een variabele. Gebruik dan de variabele in Test-pad .
star wars battlefront 2 dubbele xp
Blader door berichtonderwerpen
- PowerShell gebruiken om te controleren of een bestand bestaat zonder een variabele
- PowerShell gebruiken om te controleren of een bestand met een variabele bestaat
- Hoe PowerShell te gebruiken om te controleren of een bestand bestaat en het te kopiëren?
- PowerShell gebruiken om te controleren of een bestand bestaat en het te verwijderen?
- Hoe PowerShell te gebruiken om te controleren of een bestand bestaat, anders Afsluiten
- Hoe PowerShell te gebruiken om te controleren of een bestand bestaat en niet leeg is?
- Hoe PowerShell te gebruiken om te controleren of een bestand in een map bestaat
- PowerShell gebruiken om te controleren of een bestand op een externe computer bestaat
- Referenties en verder lezen
PowerShell gebruiken om te controleren of een bestand bestaat zonder een variabele
In dit gedeelte leert u hoe u moet rennen Test-pad commando zonder variabele.
U kunt Test-Path als een zelfstandige opdracht uitvoeren. Bovendien kunt u het commando ook combineren met een ALS verklaring om aanvullende taken uit te voeren op basis van het resultaat van de Test-pad opdracht.
Hoe u het testpad rechtstreeks kunt uitvoeren zonder een variabele?
Deze subsectie leert u hoe u Test-Path alleen kunt uitvoeren (zonder het resultaat in een ALS stelling).
Ik heb een bestand met de naam processen.txt in E: eports.
Om te controleren of het bestand bestaat, voert u de onderstaande opdracht in PowerShell in en drukt u op enter
|__+_|
Toen ik op drukte, keerde PowerShell terug Waar , wat betekent dat het bestand bestaat.
Als ik echter dezelfde opdracht uitvoer voor een bestand dat niet bestaat, retourneert PowerShell niet waar .
Hoe testpad en IF-statement te combineren zonder een variabele?
Zoals ik eerder al zei, na het gebruik van PowerShell Test-Path om te controleren of een bestand bestaat, kunt u het resultaat gebruiken in een ALS verklaring om toevoegingstaken uit te voeren.
In dit voorbeeld zal ik controleren of E: eportsprocesses.txt bestaat en als het bestaat, zal ik het bestand naar C: eports kopiëren. Hier is het script dat het werk zal doen.
Het wordt aanbevolen om deze opdracht uit te voeren in PowerShell ISE |__+_|Hier is het resultaat in PowerShell ISE en het bestand gekopieerd in C: eports
Ik kan het script slimmer maken door twee extra regels toe te voegen.
|__+_|en….
|__+_| De eerste opdracht hierboven geeft een bericht weer als het bestand is gekopieerd. De tweede geeft een bericht weer dat het bestand niet bestaat.Hier is het aangepaste script...
|__+_|
PowerShell gebruiken om te controleren of een bestand met een variabele bestaat
In de laatste sectie heb ik je laten zien hoe je PowerShell kunt gebruiken om te controleren of een bestand bestaat zonder variabelen te gebruiken. In deze sectie zal ik het resultaat van Test-Path in een variabele opslaan. Gebruik dan de variabele in een ALS stelling.
In het voorbeeld in deze sectie wil ik controleren of eerste-bestand.txt bestaat in het pad dat wordt weergegeven in de onderstaande afbeelding. Dan, als het bestaat, zal ik het bestand kopiëren naar C:PS
In de eerste stappen voer ik de onderstaande opdracht uit:
|__+_|Deze opdracht is hetzelfde als de laatste met één verschil - het resultaat van de opdracht wordt opgeslagen in de Bestand bestaat variabel.
Hoe PowerShell te gebruiken om te controleren of een bestand bestaat en het te kopiëren?
Toen ik deze sectie introduceerde, heb ik de uitvoer van de Test-pad commando aan de Bestand bestaat variabel.
|__+_|In deze subsectie zal ik u leren hoe u het bestand kunt kopiëren als het bestaat. Om dit te doen, zal ik de . introduceren ALS verklaring met de Artikel kopiëren opdracht.
|__+_|Hier is het volledige script met de gecombineerde opdrachten:
|__+_|En hier is het script in PowerShell ISE.
PowerShell gebruiken om te controleren of een bestand bestaat en het te verwijderen?
In de laatste paragraaf heb je gezien hoe je kunt controleren of een bestand bestaat en hoe je het kunt kopiëren. Wat als u het bestand in plaats daarvan wilt kopiëren?
Als u het bestand wilt verwijderen in plaats van het te kopiëren, vervangt u de Artikel kopiëren commando met de Verwijder voorwerp opdracht.
Hier is het bijgewerkte script dat de PowerShell IF-instructie gebruikt om te controleren of er een bestand bestaat. Als het bestaat, verwijder het dan...
|__+_|Hoe PowerShell te gebruiken om te controleren of een bestand bestaat, anders Afsluiten
In sommige PowerShell-scriptsituaties wilt u misschien controleren of er een bestand bestaat. Voer vervolgens, als het bestaat, een gespecificeerde taak uit - zoals het bestand kopiëren of verwijderen - anders sluit u het script af.
Om dit te bereiken, hoeft u alleen maar de Anders blok van de Als stelling.
In de laatste subsectie heb ik dit script gebruikt om een bestand te verwijderen als het bestaat.
|__+_|Als ik wil dat het script wordt afgesloten als het bestand niet bestaat, zal ik het script aanpassen zoals hieronder wordt weergegeven...
|__+_|Hier is de logica van het gewijzigde script...
Controleer of het bestand E: eportsfirst-file.txt bestaat. Als het bestaat, verwijdert u het bestand.
Als het bestand echter niet bestaat, voert u de opdracht uit in de Anders blok van de Als stelling. In dit geval is het commando in de Anders lus is het woord, Pauze .
Pauze vertelt Power shell om te stoppen met het verwerken van het script. Je mag ook toevoegen Pauze op het If-blok van de instructie - onder de opdracht Remove-Item ...
|__+_|Hoe PowerShell te gebruiken om te controleren of een bestand bestaat en niet leeg is?
Dit is nog een andere voorwaarde die veel voorkomt in PowerShell-scripting: controleren of een bestand bestaat en niet leeg is. Dit kan van toepassing zijn op logbestanden.
Als u bijvoorbeeld een toepassing hebt die logbestanden maakt en bijwerkt, kunt u een PowerShell-script schrijven dat controleert of nieuwe logbestanden worden bijgewerkt.
Om verder te gaan, om te testen of een bestand bestaat, gebruik je de Test-pad opdracht. Om echter te controleren of het bestand leeg is, moet u een ander commando invoeren, Get-ChildItem .
In dit scenario kunt u de Get-ChildItem commando op twee manieren.
een , als u wilt controleren of een enkel bestand leeg is, kunt u uitvoeren Get-ChildItem commando, waarbij het volledige bestandspad wordt gebruikt als de Pad parameter. twee , of als u een aantal bestanden in een map wilt controleren, gebruik dan het mappad als de Pad parameter.
In deze sectie zal ik een voorbeeld geven dat controleert of een specifiek bestand bestaat en leeg is. Ik zal de tweede optie behandelen in de Hoe PowerShell te gebruiken om te controleren of een bestand een map bevat verderop in deze handleiding.
In dit voorbeeld wil ik controleren of het bestand, eerste-bestand.txt en als het leeg is.
Zoals ik eerder al zei, is de eerste stap het uitvoeren van de Get-ChildItem commando, waarbij het volledige bestandspad wordt gebruikt als de Pad parameter. Voer om te beginnen de onderstaande opdracht uit ...
|__+_|Hier is het resultaat van de opdracht. Aan het resultaat van de opdracht kunt u zien dat het bestand een eigenschap heeft met de naam Lengte .
effectief, de Lengte eigenschap van een bestand toont de grootte van het bestand. Bovendien, als een bestand leeg is, wordt de Lengte zal nul (0) zijn.
Dus, om PowerShell te gebruiken om te controleren of niet leeg is, zullen we controleren of de Lengte is NIET nul (0).
Om dit te bereiken, zal ik de laatste opdracht wijzigen zoals hieronder weergegeven ...
|__+_|Hier is het resultaat van de opdracht in PowerShell. In dit geval, omdat de grootte van mijn bestand 0 (leeg) is, is de opdracht geretourneerd vals .
Dit betekent dat dit bestand leeg is.
Maar hoe nemen we het bit op dat test of het bestand bestaat? Leuk dat je het vraagt!
Om de logica te introduceren die PowerShell gebruikt om te controleren of een bestand bestaat en ook om te controleren of het bestand NIET leeg is, zal ik delen van ons vorige script en de Get-ChildItem commando hierboven.
Hier is mijn aangepaste script...
|__+_|In deze aangepaste versie van het script heb ik de volgende wijzigingen aangebracht...
- In regel 2 heb ik de . opgeslagen Get-ChildItem commando dat controleert of een bestand leeg is – in een variabele genaamd $checkiffileisleeg .
- Vervolgens heb ik in regel 3 nog een voorwaarde toegevoegd aan de Als stelling. Het conditiedeel van de Als de instructie is bijgewerkt naar If ($fileexists -eq $True) -en ($checkiffileisempty -eq $False)).
Deze voorwaarde test of wat is opgeslagen in $bestand bestaat is Waar (Bestand bestaat). Verder controleert het of wat er is opgeslagen in $checkiffileisempt is niet waar (bestand is leeg).
Effectief controleert PowerShell of de Test-pad commando dat gecontroleerd of het bestandspad bestaat is Waar . Daarnaast controleert het ook of de Get-ChildItem commando dat controleert of het bestand NIET leeg is is niet waar (wat betekent dat het bestand leeg is) - Ten slotte, als aan beide voorwaarden is voldaan, voert PowerShell in regel 4 de opdracht uit tussen de {}-haak van de If-instructie.
In dit voorbeeld heb ik deze opdracht tussen de {} haakjes van de If-instructie.
Het commando voegt de tekst toe aan de Waarde parameter van Set-inhoud opdracht.
Om te testen of het script werkt, kopieert u het naar PowerShell ISE en voert u het script uit...
Toen ik het script, het bestand, eerste-bestand.txt – die voorheen leeg was – bevat nu enkele waarden. Bovendien is de bestandsgrootte niet langer nul (0)!
Hoe PowerShell te gebruiken om te controleren of een bestand in een map bestaat
Tot dusverre heeft deze handleiding meerdere scenario's behandeld om PowerShell te gebruiken om te controleren of een bestand bestaat.
In deze sectie wil ik diep in mappen duiken. In het bijzonder leert u hoe u kunt controleren of een bestand in de huidige map of in alle submappen bestaat.
Daarnaast leert u hoe u PowerShell kunt gebruiken om te controleren of een bestand in meerdere mappen bestaat. Ten slotte zal ik u laten zien hoe u een jokerteken gebruikt om te controleren of een bestand bestaat.
Hoe PowerShell te gebruiken om te controleren of een bestand in de huidige map bestaat
In dit eerste voorbeeld leert u hoe u kunt controleren of een bestand bestaat in de huidige map – met uitzondering van alle submappen.
In dit voorbeeld wil ik controleren of er bestanden met de bestandsextensie .log in de map E: eports staan. Ik wil echter alle submappen uitsluiten.
De eerste stap is het uitvoeren van de Get-ChildItem opdracht. Leid vervolgens de uitvoer naar Waar-Object en filter op PSI'sContainer eigendom.
De PSI'sContainer eigenschap is een eigenschap die mappen of mappen definieert. In de Waar-Object commando, heb ik $_.PSIsContainer -ne $true opgegeven. Deze opdracht zegt gewoon: Retourneer geen item als het is PSI'sContainer eigendom is waar. Hiermee worden alleen bestanden geretourneerd.Hier is de opdracht...
|__+_|En hier is het resultaat in PowerShell...
De laatste stap is om het volledige pad van alle bestanden met de extensie .log in de huidige map te retourneren.
Hier is de opdracht...
|__+_|En het resultaat…
Vanaf dit punt, als u verdere taken op de bestanden wilt uitvoeren, kunt u de uitvoer van het laatste resultaat naar een voor elk lus. Dan, binnen de voor elk loop, kunt u extra opdrachten uitvoeren.Hoe PowerShell te gebruiken om te controleren of een bestand in submappen bestaat
Als u wilt controleren of een specifiek bestand of bestanden in alle submappen bestaan, niet in de huidige map, moet u kleine wijzigingen aanbrengen in de Get-ChildItem opdracht.
live weer wallpaper voor Android
In het bijzonder, wanneer u de Get-ChildItem bevel, in Waar-Object , jij filtert Waar-Object om alleen mappen terug te geven.
|__+_|De opdracht retourneert het volledige pad naar alle submappen in de opgegeven map...
In de volgende stap moet u gebruik maken van voor elk instructie om alle mappen te doorlopen die door de laatste opdracht zijn geretourneerd. Dan, binnen de voor elk verklaring, voer een andere uit Get-ChildItem commando tegen elke submap.
Er zijn drie varianten van voor elk maar in dit voorbeeld gebruik ik de voor elk -Object-cmdlet.
|__+_|De opdracht toont alle logbestanden in de submappen...
Hoe PowerShell te gebruiken om te controleren of een bestand bestaat in de huidige map en in alle submappen
In de laatste 2 subsecties heb ik de PSI'sContainer eigenschap om submappen uit te filteren of alleen submappen terug te geven. In dit voorbeeld zal ik de . elimineren PSI'sContainer eigendom.
Ik zal echter een introduceren Get-ChildItem opdrachtparameter, genaamd recursief . De recursief parameter krachten Get-ChildItem om de opgegeven map en al zijn submappen te controleren.
Hier is een aangepast script.
|__+_|De recursief parameter wordt geïntroduceerd in de eerste Get-ChildItem opdracht. Het is niet vereist in de tweede Get-ChildItem commando (binnen de Voor elk-object blok).
Hier is het resultaat van de opdracht. Deze keer bevat het rapport alle logbestanden in de bovenste map en alle submappen.
PowerShell gebruiken om te controleren of een bestand op een externe computer bestaat
Als u wilt testen of een bestand op een externe computer bestaat, kunt u hetzelfde principe toepassen dat in alle voorbeelden in deze handleiding wordt besproken.
U moet echter een nieuwe opdracht invoeren met de naam Invoke-opdracht . Dan, binnen de Invoke-opdracht commando, gebruik zijn ScriptBlock parameter om een van de opdrachten op te geven die we eerder in deze handleiding hebben besproken.
Een ander belangrijk ding om op te merken is dat u mogelijk een gebruikersnaam en wachtwoord moet opgeven voor een account met toestemming om verbinding te maken met de externe computer.
Bovendien moet het opgegeven account toestemming hebben om de opdracht uit te voeren in de ScriptBlock parameter – op de externe computer.
Gebruik ten slotte de Computer naam parameter om de naam van de externe computer op te geven.
Ter referentie, hier is de algemene syntaxis van de Invoke-opdracht opdracht.
|__+_|Om meer te lezen over de Invoke-opdracht commando, zie Referenties en verder lezen aan het einde van deze handleiding.
Als ik hoop dat ik je met succes heb kunnen leren hoe je PowerShell kunt gebruiken om te controleren of een bestand bestaat!
Ik hoop ook dat je de S Zone nuttig vond. Als je het nuttig vond, stem dan vriendelijk Ja op de Was dit bericht Nuttige vraag hieronder.
U kunt ook een vraag stellen, een opmerking achterlaten of feedback geven met het formulier 'Een reactie achterlaten' aan het einde van deze pagina.
Bezoek ten slotte onze Windows PowerShell-instructiepagina voor meer e-mailtechnologie S-zones. Mogelijk vindt u onze Work from Home-pagina ook erg nuttig.
Referenties en verder lezen
- Invoke-opdracht
- Powershell Indien anders uitgelegd: syntaxis en voorbeelden
- Get-ChildItem
- Test-pad


