Com utilitzar PowerShell per comprovar si existeix un fitxer
En aquesta Zona S, Victor us ensenya a utilitzar PowerShell per comprovar si existeix un fitxer. La guia cobreix diversos exemples per utilitzar PowerShell per comprovar si existeix un fitxer.
Per utilitzar PowerShell per comprovar si existeix un fitxer, feu servir el Camí de prova Cmdlet. Tanmateix, podeu introduir la ruta del fitxer directament al fitxer Camí de prova comanda o deseu el fitxer en una variable. A continuació, utilitzeu la variable a Camí de prova .
Navega per temes de publicació
- Com utilitzar PowerShell per comprovar si existeix un fitxer sense una variable
- Com utilitzar PowerShell per comprovar si existeix un fitxer amb una variable
- Com utilitzar PowerShell per comprovar si existeix un fitxer en una carpeta
- Com utilitzar PowerShell per comprovar si existeix un fitxer en un ordinador remot
- Referències i lectura addicional
Com utilitzar PowerShell per comprovar si existeix un fitxer sense una variable
Aquesta secció us ensenya com córrer Camí de prova comanda sense variable.
Podeu executar Test-Path com a ordre autònoma. A més, també podeu combinar l'ordre amb un SI declaració per realitzar tasques addicionals basades en el resultat de la Camí de prova comandament.
Com executar Test-Path directament sense una variable
Aquesta subsecció us ensenya com executar Test-Path sol (sense utilitzar el resultat en un SI declaració).
Tinc un fitxer anomenat processes.txt a E: eports.
Per comprovar si el fitxer existeix, introduïu l'ordre següent a PowerShell i premeu Intro
|_+_|
Quan vaig prémer, va tornar PowerShell És cert , és a dir que el fitxer existeix.
Tanmateix, si executo la mateixa ordre per a un fitxer que no existeix, torna PowerShell Fals .
Com combinar la ruta de prova i la declaració IF sense una variable
Com he esmentat anteriorment, després d'utilitzar PowerShell Test-Path per comprovar si existeix un fitxer, podeu utilitzar el resultat en una SI declaració per realitzar tasques d'addicions.
En aquest exemple, comprovaré si existeix E: eportsprocesses.txt i, si existeix, copiaré el fitxer a C: eports. Aquí teniu el guió que farà la feina.
Es recomana executar aquesta comanda a PowerShell ISE |_+_|Aquí teniu el resultat a PowerShell ISE i el fitxer copiat a C: eports
Puc fer que l'script sigui més intel·ligent afegint dues línies addicionals.
|_+_|i….
|_+_| La primera ordre anterior mostra un missatge si es copia el fitxer. El segon mostra un missatge que el fitxer no existeix.Aquí teniu l'script modificat...
|_+_|
Com utilitzar PowerShell per comprovar si existeix un fitxer amb una variable
A la darrera secció us vaig mostrar com utilitzar PowerShell per comprovar si existeix un fitxer sense utilitzar variables. En aquesta secció, desaré el resultat de Test-Path en una variable. A continuació, utilitzeu la variable en an SI declaració.
A l'exemple d'aquesta secció, vull comprovar si primer fitxer.txt existeix al camí que es mostra a la imatge següent. Aleshores, si existeix, copiaré el fitxer a C:PS
En els primers passos, executaré l'ordre següent:
htts: //thevideo.me/pair|_+_|
Aquesta ordre és la mateixa que l'última amb una diferència: el resultat de l'ordre es desa al fitxer fitxer existeix variable.
Com utilitzar PowerShell per comprovar si existeix un fitxer i copiar-lo
Quan vaig presentar aquesta secció, vaig desar la sortida del fitxer Camí de prova comanda al fitxer existeix variable.
|_+_|En aquesta subsecció, us ensenyaré com copiar el fitxer si existeix. Per fer-ho, presentaré el SI declaració amb el Element de còpia comandament.
|_+_|Aquí teniu l'script complet amb les ordres combinades:
|_+_|I aquí teniu l'script a PowerShell ISE.
Com utilitzar PowerShell per comprovar si existeix un fitxer i eliminar-lo
A l'última subsecció, heu vist com comprovar si existeix un fitxer i copiar-lo. Què passa si voleu copiar el fitxer?
Si voleu suprimir el fitxer en lloc de copiar-lo, substituïu el fitxer Element de còpia comanda amb el Elimina-element comandament.
Aquí teniu l'script actualitzat que utilitza la instrucció IF de PowerShell per comprovar si existeix un fitxer. Aleshores, si existeix, suprimiu-lo...
|_+_|Com utilitzar PowerShell per comprovar si existeix un fitxer
En algunes situacions de script de PowerShell, és possible que vulgueu comprovar si existeix un fitxer. Aleshores, si existeix, realitzeu una tasca especificada, com ara copiar o suprimir el fitxer, en cas contrari, sortiu de l'script.
Per aconseguir-ho, tot el que heu de fer és afegir el Altrament bloc de la Si declaració.
A l'última subsecció, vaig utilitzar aquest script per eliminar un fitxer si existeix.
|_+_|Si vull que l'script surti si el fitxer no existeix, modificaré l'script tal com es mostra a continuació...
|_+_|Aquí teniu la lògica de l'script modificat...
Comproveu si el fitxer, E: eportsfirst-file.txt existeix. Si existeix, suprimiu el fitxer.
Tanmateix, si el fitxer no existeix, executeu l'ordre al fitxer Altrament bloc de la Si declaració. En aquest cas, l'ordre del fitxer Altrament bucle és la paraula, Trencar .
Trencar diu a PowerShell que deixi de processar l'script. També pots afegir Trencar al bloc If de la declaració, a sota de l'ordre Remove-Item...
com obtenir més temes de commutació|_+_|
Com utilitzar PowerShell per comprovar si un fitxer existeix i no està buit
Aquesta és una altra condició comuna als scripts de PowerShell: comprovar si existeix un fitxer i no està buit. Això pot ser aplicable als fitxers de registre.
Per exemple, si teniu una aplicació que crea i actualitza fitxers de registre, podeu escriure un script de PowerShell que comprove que els nous fitxers de registre estiguin actualitzats.
Seguint, per provar si existeix un fitxer, feu servir el Camí de prova comandament. Tanmateix, per comprovar si el fitxer està buit, heu d'introduir una altra ordre, Get-ChildItem .
En aquest escenari, podeu utilitzar el Get-ChildItem comandar de dues maneres.
1 , si voleu comprovar si un sol fitxer està buit, podeu executar-lo Get-ChildItem comanda, utilitzant la ruta completa del fitxer com a Camí paràmetre. 2 , alternativament, si voleu comprovar un munt de fitxers en una carpeta, utilitzeu el camí de la carpeta com a Camí paràmetre.
En aquesta secció, donaré un exemple que comprova si un fitxer específic existeix i està buit. Cobriré la segona opció al Com utilitzar PowerShell per comprovar si un fitxer existeix una carpeta A secció més endavant en aquesta guia.
En aquest exemple, vull comprovar si el fitxer, primer fitxer.txt i si està buit.
Com he esmentat anteriorment, el primer pas és executar el Get-ChildItem comanda, utilitzant la ruta completa del fitxer com a Camí paràmetre. Per començar, executeu l'ordre següent...
|_+_|Aquí teniu el resultat de l'ordre. A partir del resultat de l'ordre, podeu veure que el fitxer té una propietat anomenada Llargada .
Efectivament, el Llargada propietat d'un fitxer mostra la mida del fitxer. A més, si un fitxer està buit, el fitxer Llargada serà zero (0).
Per tant, per utilitzar PowerShell per comprovar si no està buit, comprovarem si Llargada NO és zero (0).
Per aconseguir-ho, modificaré l'última comanda tal com es mostra a continuació...
|_+_|Aquí teniu el resultat de l'ordre a PowerShell. En aquest cas, com que la mida del meu fitxer és 0 (buit), s'ha retornat l'ordre fals .
Això vol dir que aquest fitxer està buit.
Però, com incloem el bit que prova si el fitxer existeix? M'alegro que hagis preguntat!
Per introduir la lògica que utilitza PowerShell per comprovar si existeix un fitxer i també comprovar que el fitxer NO està buit, combinaré parts del nostre script anterior i el Get-ChildItem comanda a dalt.
Aquí teniu el meu script modificat...
|_+_|En aquesta versió modificada de l'script, he fet els canvis següents...
- A la línia 2, vaig guardar el Get-ChildItem ordre que verifica si un fitxer està buit, en una variable cridada $checkiffileisempty .
- Aleshores, a la línia 3, vaig afegir una altra condició al Si declaració. La part de la condició Si la declaració s'ha actualitzat a If (($fileexists -eq $True) -i ($checkiffileisempty -eq $False)).
Aquesta condició prova si el que s'ha desat $fitxer existeix és És cert (el fitxer existeix). A més, comprova si el que està desat $checkiffileisempt és Fals (l'arxiu està buit).
Efectivament, PowerShell comprova si Camí de prova L'ordre que va comprovar si existeix la ruta del fitxer és És cert . A més, també comprova si el Get-ChildItem L'ordre que comprova si el fitxer NO està buit ho és Fals (és a dir que el fitxer està buit) - Finalment, si es compleixen ambdues condicions, a la línia 4, PowerShell executarà l'ordre al parèntesi {} de la instrucció If.
En aquest exemple, tinc aquesta ordre al parèntesi {} de la instrucció If.
L'ordre afegeix el text al fitxer Valor paràmetre de Contingut del conjunt comandament.
Per provar que l'script funciona, copieu-lo a PowerShell ISE i executeu l'script...
Un cop he executat l'script, el fitxer, primer fitxer.txt – que abans estava buit – ara té alguns valors. A més, la mida del fitxer ja no és zero (0)!
Com utilitzar PowerShell per comprovar si existeix un fitxer en una carpeta
Fins ara, aquesta guia ha cobert diversos escenaris per utilitzar PowerShell per comprovar si existeix un fitxer.
En aquesta secció, vull aprofundir en les carpetes. Concretament, aprendràs a comprovar si existeix un fitxer a la carpeta actual o a totes les subcarpetes.
A més, aprendràs a utilitzar PowerShell per comprovar si existeix un fitxer en diverses carpetes. Finalment, us mostraré com utilitzar un comodí per comprovar si existeix un fitxer.
Com utilitzar PowerShell per comprovar si existeix un fitxer a la carpeta actual
En aquest primer exemple, aprendràs a comprovar si existeix un fitxer a la carpeta actual, excloent totes les subcarpetes.
kodi no funciona
En aquest exemple, vull comprovar si existeixen fitxers amb l'extensió de fitxer .log a la carpeta E: eports. Tanmateix, vull excloure totes les subcarpetes.
El primer pas és executar el Get-ChildItem comandament. A continuació, conduïu la sortida a On-Objecte i filtra per PSIContainer propietat.
El PSIContainer property és una propietat que defineix carpetes o directoris. En el On-Objecte comanda, he especificat $_.PSIsContainer -ne $true. Aquesta ordre simplement diu No retorneu cap element si és PSIContainer la propietat és veritable. Això només retornarà fitxers.Aquí teniu l'ordre...
|_+_|I aquí teniu el resultat a PowerShell...
El pas final és tornar el camí complet de tots els fitxers amb l'extensió .log a la carpeta actual.
Aquí teniu l'ordre...
|_+_|I el resultat...
A partir d'aquest punt, si voleu realitzar més tasques als fitxers, podeu canalitzar la sortida de l'últim resultat a a Per cadascú bucle. Després, dins del Per cadascú bucle, podeu executar ordres addicionals.Com utilitzar PowerShell per comprovar si existeix un fitxer a les subcarpetes
Si voleu comprovar si un fitxer o fitxers específics existeixen a totes les subcarpetes, no a la carpeta actual, heu de fer petits canvis a la carpeta. Get-ChildItem comandament.
Concretament, quan feu la canonada Get-ChildItem comandar, a On-Objecte , tu filtres On-Objecte per tornar només carpetes.
|_+_|L'ordre retorna el camí complet a totes les subcarpetes de la carpeta especificada...
En el següent pas, heu d'utilitzar Per cadascú sentència per iterar per totes les carpetes retornades per l'última ordre. Després, dins del Per cadascú declaració, executa una altra Get-ChildItem comanda contra cada subcarpeta.
Hi ha tres variants de Per cadascú però, en aquest exemple, faré servir el Per cadascú - Cmdlet d'objecte.
|_+_|L'ordre mostra tots els fitxers de registre a les subcarpetes...
Com utilitzar PowerShell per comprovar si existeix un fitxer a la carpeta actual i totes les subcarpetes
A les 2 últimes subseccions, he utilitzat el PSIContainer propietat per filtrar subcarpetes o retornar només subcarpetes. En aquest exemple, eliminaré el PSIContainer propietat.
Tanmateix, presentaré a Get-ChildItem paràmetre d'ordre, anomenat Recurs . El Recurs forces dels paràmetres Get-ChildItem per comprovar la carpeta especificada i totes les seves subcarpetes.
Aquí hi ha un script modificat.
|_+_|El Recurs el paràmetre s'introdueix en el primer Get-ChildItem comandament. No és obligatori en el segon Get-ChildItem comandament (dins de Per a cada objecte bloc).
Aquí teniu el resultat de l'ordre. Aquesta vegada, l'informe inclou tots els fitxers de registre de la carpeta superior i totes les seves subcarpetes.
Com utilitzar PowerShell per comprovar si existeix un fitxer en un ordinador remot
Si voleu provar si existeix un fitxer en un ordinador remot, podeu aplicar el mateix principi que es parla a tots els exemples d'aquesta guia.
Tanmateix, heu d'introduir una ordre nova anomenada Invocar-Ordre . Després, dins del Invocar-Ordre comanda, utilitza el seu ScriptBlock paràmetre per especificar una de les ordres que hem comentat anteriorment en aquesta guia.
Una altra cosa important a tenir en compte és que és possible que hàgiu d'especificar un nom d'usuari i una contrasenya per a un compte amb permís per connectar-vos a l'ordinador remot.
A més, el compte especificat hauria de tenir el permís per executar l'ordre al fitxer ScriptBlock paràmetre: a l'ordinador remot.
Finalment, utilitzeu el Nom de l'ordinador paràmetre per especificar el nom de l'ordinador remot.
Per a la vostra referència, aquí teniu la sintaxi general de la Invocar-Ordre comandament.
|_+_|Per llegir més sobre el Invocar-Ordre comanda, vegeu Referències i lectura addicional al final d'aquesta guia.
Si espero poder ensenyar-vos com utilitzar PowerShell per comprovar si existeix un fitxer!
També espero que us hagi estat útil la Zona S. Si us ha semblat útil, voteu Sí a la pregunta Va ser útil aquesta publicació a continuació.
Alternativament, podeu fer una pregunta, deixar un comentari o fer comentaris amb el formulari Deixa una resposta que es troba al final d'aquesta pàgina.
Finalment, per obtenir més zones S de tecnologia de correu electrònic, visiteu la nostra pàgina de instruccions de Windows PowerShell. També pot ser que la nostra pàgina de treball des d'inici sigui molt útil.
Referències i lectura addicional
- Invocar-Ordre
- Powershell si s'explica una altra cosa: sintaxi i exemples
- Get-ChildItem
- Camí de prova


