Jak používat PowerShell ke kontrole, zda soubor existuje
V této zóně S vás Victor naučí, jak používat PowerShell ke kontrole, zda soubor existuje. Průvodce obsahuje několik příkladů použití PowerShellu ke kontrole, zda soubor existuje.
Chcete-li použít PowerShell ke kontrole, zda soubor existuje, použijte Testovací cesta Rutina. Můžete však buď zadat cestu k souboru přímo do Testovací cesta příkaz nebo uložit soubor do proměnné. Poté použijte proměnnou in Testovací cesta .
Procházet témata příspěvků
- Jak používat PowerShell ke kontrole, zda soubor existuje bez proměnné
- Jak používat PowerShell ke kontrole, zda soubor existuje s proměnnou
- Jak používat PowerShell ke kontrole, zda soubor existuje ve složce
- Jak používat PowerShell ke kontrole, zda soubor existuje ve vzdáleném počítači
- Reference a další čtení
Jak používat PowerShell ke kontrole, zda soubor existuje bez proměnné
Tato sekce vás naučí běhat Testovací cesta příkaz bez proměnné.
Test-Path můžete spustit jako samostatný příkaz. Kromě toho můžete také kombinovat příkaz s LI příkaz k provedení dalších úkolů na základě výsledku Testovací cesta příkaz.
Jak spustit testovací cestu přímo bez proměnné
Tato podsekce vás naučí, jak spustit Test-Path samostatně (bez použití výsledku v LI tvrzení).
Mám soubor s názvem processs.txt v E: eports.
Chcete-li zkontrolovat, zda soubor existuje, zadejte příkaz níže v prostředí PowerShell a stiskněte klávesu enter
|_+_|
Když jsem stiskl, PowerShell se vrátil Skutečný , což znamená, že soubor existuje.
Pokud však spustím stejný příkaz pro soubor, který neexistuje, PowerShell se vrátí Nepravdivé .
root samsung galaxy luna
Jak zkombinovat testovací cestu a příkaz IF bez proměnné
Jak jsem zmínil dříve, po použití PowerShell Test-Path ke kontrole, zda soubor existuje, můžete výsledek použít v LI příkaz k provedení doplňkových úkolů.
V tomto příkladu zkontroluji, zda existuje E: eportsprocesses.txt, a pokud existuje, zkopíruji soubor do C: eports. Zde je skript, který tuto práci provede.
Tento příkaz se doporučuje spustit v PowerShell ISE |_+_|Zde je výsledek v PowerShell ISE a soubor zkopírovaný do C: eports
Mohu udělat skript chytřejší přidáním dvou dalších řádků.
|_+_|a….
|_+_| První výše uvedený příkaz zobrazí zprávu, pokud je soubor zkopírován. Druhý zobrazí zprávu, že soubor neexistuje.Zde je upravený skript…
|_+_|
Jak používat PowerShell ke kontrole, zda soubor existuje s proměnnou
V poslední části jsem vám ukázal, jak používat PowerShell ke kontrole, zda soubor existuje bez použití proměnných. V této části uložím výsledek Test-Path do proměnné. Poté použijte proměnnou v an LI tvrzení.
V příkladu v této části chci zkontrolovat, zda first-file.txt existuje v cestě zobrazené na obrázku níže. Pak, pokud existuje, zkopíruji soubor do C:PS
V prvních krocích spustím níže uvedený příkaz:
|_+_|Tento příkaz je stejný jako předchozí s jediným rozdílem – výsledek příkazu se uloží do soubor existuje proměnná.
Jak pomocí PowerShellu zkontrolovat, zda soubor existuje, a zkopírovat jej
Když jsem zavedl tuto sekci, uložil jsem výstup souboru Testovací cesta příkaz k soubor existuje proměnná.
|_+_|V této podsekci vás naučím, jak zkopírovat soubor, pokud existuje. K tomu představím LI prohlášení s Kopírovat položku příkaz.
|_+_|Zde je celý skript s kombinovanými příkazy:
|_+_|A zde je skript v PowerShell ISE.
Jak pomocí PowerShellu zkontrolovat, zda soubor existuje, a odstranit jej
V poslední podsekci jste viděli, jak zkontrolovat, zda soubor existuje, a zkopírovat jej. Co když chcete soubor místo toho zkopírovat?
Pokud chcete soubor místo kopírování odstranit, nahraďte jej Kopírovat položku příkaz s Odebrat položku příkaz.
Zde je aktualizovaný skript, který používá příkaz PowerShell IF ke kontrole, zda soubor existuje. Pak, pokud existuje, smažte jej…
|_+_|Jak používat PowerShell ke kontrole, zda soubor existuje, jinak Konec
V některých situacích skriptování PowerShellu můžete chtít zkontrolovat, zda soubor existuje. Pak, pokud existuje, proveďte určenou úlohu – například zkopírujte nebo odstraňte soubor – v opačném případě skript ukončete.
otevřete Průzkumník souborů jako správce systému Windows 10
Chcete-li toho dosáhnout, vše, co musíte udělat, je přidat Jiný bloku Li tvrzení.
V poslední podsekci jsem použil tento skript k odstranění souboru, pokud existuje.
|_+_|Pokud chci, aby se skript ukončil, pokud soubor neexistuje, upravím skript, jak je uvedeno níže…
|_+_|Zde je logika upraveného skriptu…
Zkontrolujte, zda soubor E: eportsfirst-file.txt existuje. Pokud existuje, odstraňte soubor.
Pokud však soubor neexistuje, spusťte příkaz v Jiný bloku Li tvrzení. V tomto případě příkaz v Jiný smyčka je slovo, Přestávka .
Přestávka řekne PowerShellu, aby zastavil zpracování skriptu. Můžete také přidat Přestávka v bloku If příkazu – pod příkazem Remove-Item…
|_+_|Jak používat PowerShell ke kontrole, zda soubor existuje a není prázdný
Toto je další podmínka běžná ve skriptování PowerShellu – kontrola, zda soubor existuje a není prázdný. To může platit pro soubory protokolu.
Pokud máte například aplikaci, která vytváří a aktualizuje soubory protokolu, můžete napsat skript prostředí PowerShell, který kontroluje, zda jsou aktualizovány nové soubory protokolu.
Pokud chcete otestovat, zda soubor existuje, použijte Testovací cesta příkaz. Chcete-li však zkontrolovat, zda je soubor prázdný, musíte zadat další příkaz, Get-ChildItem .
V tomto scénáři můžete použít Get-ChildItem příkaz dvěma způsoby.
jeden , pokud chcete zkontrolovat, zda je jeden soubor prázdný, můžete spustit Get-ChildItem příkaz s použitím celé cesty k souboru jako Cesta parametr. dva , případně, pokud chcete zkontrolovat spoustu souborů ve složce, použijte cestu ke složce jako Cesta parametr.
V této části uvedu příklad, který zkontroluje, zda konkrétní soubor existuje a je prázdný. Budu se zabývat druhou možností v Jak používat PowerShell ke kontrole, zda soubor existuje složka A části dále v této příručce.
V tomto příkladu chci zkontrolovat, zda soubor, first-file.txt a pokud je prázdný.
Jak jsem již zmínil, prvním krokem je spuštění Get-ChildItem příkaz s použitím celé cesty k souboru jako Cesta parametr. Chcete-li začít, spusťte níže uvedený příkaz…
|_+_|Zde je výsledek příkazu. Z výsledku příkazu můžete vidět, že soubor má vlastnost tzv Délka .
Účinně, Délka vlastnost souboru ukazuje velikost souboru. Navíc, pokud je soubor prázdný, Délka bude nula (0).
Chcete-li tedy použít PowerShell ke kontrole, zda není prázdné, zkontrolujeme, zda Délka NENÍ nula (0).
Abych toho dosáhl, upravím poslední příkaz, jak je uvedeno níže…
|_+_|Zde je výsledek příkazu v PowerShellu. V tomto případě, protože velikost mého souboru je 0 (prázdný), příkaz vrátil Nepravdivé .
To znamená, že tento soubor je prázdný.
Ale jak zahrneme bit, který testuje, zda soubor existuje? Jsem rád, že ses zeptal!
Abych představil logiku, která používá PowerShell ke kontrole, zda soubor existuje, a také ke kontrole, zda soubor NENÍ prázdný, zkombinuji části našeho předchozího skriptu a Get-ChildItem příkaz výše.
Zde je můj upravený skript…
|_+_|V této upravené verzi skriptu jsem provedl následující změny…
- V řádku 2 jsem uložil Get-ChildItem příkaz, který zkontroluje, zda je soubor prázdný – v proměnné zvané $checkiffileisempty .
- Pak jsem na řádek 3 přidal další podmínku Li tvrzení. Stavová část Li příkaz byl aktualizován na If (($fileexists -eq $True) -and ($checkiffileisempty -eq $False)).
Tato podmínka testuje, zda to, co je uloženo v $fileexists je Skutečný (soubor existuje). Dále kontroluje, zda je to, co je uloženo v $checkiffileisempt je Nepravdivé (soubor je prázdný).
PowerShell efektivně kontroluje, zda Testovací cesta příkaz, který zkontroluje, zda cesta k souboru existuje, je Skutečný . Kromě toho také kontroluje, zda Get-ChildItem příkaz, který kontroluje, zda soubor NENÍ prázdný, je Nepravdivé (což znamená, že soubor je prázdný) - Nakonec, pokud jsou splněny obě podmínky, na řádku 4 PowerShell provede příkaz v závorce {} příkazu If.
V tomto příkladu mám tento příkaz v závorce {} příkazu If.
Příkaz přidá text do Hodnota parametr Set-Content příkaz.
Chcete-li otestovat, že skript funguje, zkopírujte jej do PowerShell ISE a spusťte skript…
Jakmile jsem spustil skript, soubor, first-file.txt – která byla dříve prázdná – nyní v ní jsou nějaké hodnoty. Navíc velikost souboru již není nula (0)!
Jak používat PowerShell ke kontrole, zda soubor existuje ve složce
Tato příručka zatím pokrývá několik scénářů, jak pomocí PowerShellu zkontrolovat, zda soubor existuje.
V této části se chci ponořit hluboko do složek. Konkrétně se dozvíte, jak zkontrolovat, zda soubor existuje v aktuální složce nebo ve všech podsložkách.
Navíc se dozvíte, jak pomocí PowerShellu zkontrolovat, zda soubor existuje ve více složkách. Nakonec vám ukážu, jak použít zástupný znak ke kontrole, zda soubor existuje.
Jak používat PowerShell ke kontrole, zda soubor existuje v aktuální složce
V tomto prvním příkladu se naučíte, jak zkontrolovat, zda soubor existuje v aktuální složce – kromě všech podsložek.
V tomto příkladu chci zkontrolovat, zda ve složce E: eports existují soubory s příponou .log. Chci však vyloučit všechny podsložky.
Prvním krokem je spuštění Get-ChildItem příkaz. Poté připojte výstup do Kde-Objekt a filtrovat podle PSIsContainer vlastnictví.
dlc nenainstaluje páruThe PSIsContainer property je vlastnost, která definuje složky nebo adresáře. V Kde-Objekt zadal jsem $_.PSIsContainer -ne $true. Tento příkaz jednoduše říká Nevracet žádnou položku, pokud existuje PSIsContainer vlastnost je pravdivá. Tím se vrátí pouze soubory.
Zde je příkaz…
|_+_|A zde je výsledek v PowerShellu…
Posledním krokem je vrácení úplné cesty všech souborů s příponou .log v aktuální složce.
Zde je příkaz…
|_+_|A výsledek…
Od tohoto okamžiku, pokud chcete provádět další úlohy se soubory, můžete výstup posledního výsledku převést do a Pro každého smyčka. Poté v rámci Pro každého smyčky, můžete spouštět další příkazy.Jak používat PowerShell ke kontrole, zda soubor existuje v podsložkách
Pokud chcete zkontrolovat, zda určitý soubor nebo soubory existují ve všech podsložkách, nikoli v aktuální složce, musíte provést drobné změny Get-ChildItem příkaz.
Konkrétně, když potrubí Get-ChildItem příkaz, do Kde-Objekt , filtrujete Kde-Objekt vrátit pouze složky.
|_+_|Příkaz vrátí úplnou cestu ke všem podsložkám v zadané složce…
V dalším kroku je třeba použít Pro každého příkaz iterovat všechny složky vrácené posledním příkazem. Poté v rámci Pro každého prohlášení, spusťte další Get-ChildItem příkaz proti každé podsložce.
Existují tři varianty Pro každého ale v tomto příkladu použiji Pro každého -Object Cmdlet.
|_+_|Příkaz zobrazí všechny soubory protokolu v podsložkách…
Jak používat PowerShell ke kontrole, zda soubor existuje, aktuální složka a všechny podsložky
V posledních 2 podsekcích jsem použil PSIsContainer vlastnost buď odfiltrovat podsložky, nebo vrátit pouze podsložky. V tomto příkladu odstraním PSIsContainer vlastnictví.
Uvedu však a Get-ChildItem parametr příkazu, tzv Rekurze . The Rekurze parametr síly Get-ChildItem pro kontrolu zadané složky a všech jejích podsložek.
Zde je upravený skript.
|_+_|The Rekurze parametr je uveden v prvním Get-ChildItem příkaz. Ve druhém to není vyžadováno Get-ChildItem příkaz (v rámci Pro každý objekt blok).
Zde je výsledek příkazu. Tentokrát sestava zahrnuje všechny soubory protokolu v horní složce a všech jejích podsložkách.
Jak používat PowerShell ke kontrole, zda soubor existuje ve vzdáleném počítači
Chcete-li otestovat, zda soubor existuje na vzdáleném počítači, můžete použít stejný princip popsaný ve všech příkladech v této příručce.
Musíte však zavést nový příkaz s názvem Invoke-Command . Poté v rámci Invoke-Command příkaz, použijte jeho ScriptBlock parametr k určení jednoho z příkazů, o kterých jsme hovořili dříve v této příručce.
Další důležitá věc, kterou je třeba poznamenat, je, že možná budete muset zadat uživatelské jméno a heslo pro účet s oprávněním pro připojení ke vzdálenému počítači.
jak smazat spoustu zpráv na sváru
Kromě toho by zadaný účet měl mít oprávnění ke spuštění příkazu v ScriptBlock parametr – na vzdáleném počítači.
Nakonec použijte Název počítače parametr k určení názvu vzdáleného počítače.
Pro vaši informaci zde je obecná syntaxe souboru Invoke-Command příkaz.
|_+_|Chcete-li si přečíst více o Invoke-Command příkaz, viz Reference a další četba na konci této příručky.
Pokud doufám, že jsem vás dokázal úspěšně naučit, jak používat PowerShell ke kontrole, zda soubor existuje!
Také doufám, že vám S zóna pomohla. Pokud vám to pomohlo, hlasujte Ano na otázku Byl tento příspěvek užitečná níže.
Případně můžete položit otázku, zanechat komentář nebo poskytnout zpětnou vazbu pomocí formuláře Zanechat odpověď, který najdete na konci této stránky.
A konečně, další e-mailové technologické S zóny najdete na naší stránce s návody k prostředí Windows PowerShell. Velmi užitečná vám může být také naše stránka Práce z domovské stránky.
Reference a další čtení
- Invoke-Command
- Powershell If Else Explained: Syntaxe a příklady
- Get-ChildItem
- Testovací cesta


