Búsqueda de sitios web

Cree un archivo si no existe en PowerShell [4 formas]


Usando la declaración if-else

Podemos usar la instrucción if-else para crear un archivo de la siguiente manera:

Utilice el cmdlet New-Item

Para crear un archivo si no existe en PowerShell:

  • Utilice el cmdlet Test-Path con la condición if para comprobar si el archivo existe.
  • Utilice el cmdlet New-Item para crear un archivo nuevo si no existe.
  • Imprima un mensaje de error en la condición else.

Utilice la declaración if:

$file = "D:\test.txt"
if(!(Test-Path -Path $file)){
    New-Item -ItemType File -Path $file
    Write-Output "File '$file' created successfully"
} else {
    Write-Output "File '$file' already exists"
}

PRODUCCIÓN :

    Directory: D:\
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         1/16/2023   4:19 PM              0 test.txt
File 'D:\test.txt' created successfully

El cmdlet Test-Path en PowerShell comprueba si existe un archivo o carpeta en el sistema de archivos. El cmdlet devuelve un valor booleano según si existe o no el archivo deseado. La sintaxis básica de este cmdlet es Test-Path -Path , donde el parámetro -Path especifica la ruta al archivo o carpeta que queremos verificar. Puede ser una ruta relativa o absoluta.

El cmdlet Test-Path se puede combinar con otros cmdlets, como la instrucción if, para realizar operaciones condicionales en archivos o carpetas. También es posible utilizarlo para comprobar si existe un archivo. Por ejemplo, lo usamos con la instrucción if para verificar si el archivo existe en el sistema.

Si el archivo no existía, utilizamos el cmdlet New-Item. El cmdlet New-Item crea nuevos archivos, directorios, vínculos simbólicos, uniones, vínculos físicos, claves de registro y variables en el sistema de archivos o el registro. El cmdlet contiene -Path y -ItemType como parámetros. Por ejemplo, creamos un nuevo archivo usando este cmdlet.

En la declaración else, si el archivo ya existe, el programa mostrará un mensaje de error en la consola:

PRODUCCIÓN :

File 'D:\test.txt' already exists

Utilice el cmdlet Out-File

Para crear un archivo si no existe en PowerShell, reemplace el cmdlet New-Item del código mencionado anteriormente con el cmdlet Out-File. fuerte>

Utilice la declaración if:

$file = "D:\test.txt"
if(!(Test-Path -Path $file)) {
    Out-File -FilePath $file
    Write-Output "File '$file' created successfully"
} else {
    Write-Output "File '$file' already exists"
}

PRODUCCIÓN :

File 'D:\test.txt' created successfully

Analizamos el cmdlet Test-Path mientras explicamos la sección de código para usar el cmdlet New-Item. En esta sección, utilizamos el cmdlet Out-File de PowerShell.

El cmdlet Out-File envía el resultado de un comando a un archivo. Redirige la salida de un comando o script a un archivo en lugar de mostrarlo en la pantalla. Crea o sobrescribe el archivo especificado y escribe la salida en el archivo, pero para manejar la sobrescritura, podemos usar el cmdlet Test-Path que verifica si el archivo existe.

Por ejemplo, utilizamos el cmdlet Out-File para crear un archivo que proporciona el file como -Path.

Reemplace el cmdlet Test-Path

Podemos reemplazar el cmdlet Test-Path dentro de la declaración if con cualquiera de estos para verificar si el archivo existe:

  • El cmdlet Get-Item recupera información sobre un elemento del sistema de archivos, como un archivo o un directorio.
  • El cmdlet Get-ChildItem en PowerShell recupera información sobre los archivos y subdirectorios de un directorio.
  • El cmdlet Get-ItemProperty obtiene propiedades de archivos, directorios u otros elementos, según el tipo de elemento y el proveedor que accede al elemento.
  • [System.IO.File]::Exists() es un método de la clase System.IO.File en PowerShell que comprueba si existe un archivo en la ruta especificada.
  • El cmdlet dir es un alias del cmdlet Get-ChildItem.

Tenga en cuenta que todos estos cmdlets requieren el parámetro -ErrorAction con el valor Ignore para eliminar todos los errores.

Usando la declaración try-catch

Podemos reemplazar la declaración if-else de las secciones de código mencionadas anteriormente con el bloque try-catch para crear un archivo de la siguiente manera:

Utilice el cmdlet New-Item

Para crear un archivo si no existe en PowerShell:

  • Utilice la instrucción try para generar cualquier error si el archivo ya existe.
  • Utilice el cmdlet New-Item para crear un nuevo archivo en el bloque try.
  • Utilice la instrucción catch para manejar el error generado al imprimir un mensaje de error.

Utilice la declaración try-catch:

$file = "D:\test.txt"
Try {
    New-Item -ItemType File -Path $file -ErrorAction Stop
    Write-Output "File created successfully"
} Catch [System.IO.IOException]{
    Write-Host "Error: $($_.Exception.Message)"
}

PRODUCCIÓN :

    Directory: D:\
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         1/16/2023   4:31 PM              0 test.txt
File created successfully

En PowerShell, la instrucción try-catch maneja los errores que pueden ocurrir en un script.

  • El bloque try contiene el código que puede generar una excepción.
  • El bloque catch contiene el código que manejará la excepción si aparece alguna.

Si aparece una excepción en el bloque try, arrojará el error al bloque catch, donde la excepción se puede registrar, mostrar o manejar de otra manera. El bloque catch también puede especificar diferentes acciones para diferentes tipos de excepciones y puede generar el mensaje de error. Permite que el script continúe ejecutándose incluso si ocurre un error en lugar de detener la ejecución.

Por ejemplo, utilizamos la instrucción try-catch para crear un archivo. El bloque try contiene el cmdlet New-Item para crear un nuevo archivo en la ruta especificada. El comando creó el archivo correctamente si no existía. El bloque catch se ejecutará si se produce una excepción, como si el archivo ya existe. Entregó System.IO.IOException y mostró un mensaje de error:

PRODUCCIÓN :

Error: The file 'D:\test.txt' already exists.

Utilice el cmdlet Out-File

Para crear un archivo si no existe en PowerShell, reemplace el cmdlet New-Item del código mencionado anteriormente incluido en el bloque try con el Cmdlet Out-File.

Utilice la declaración try-catch:

$file = "D:\test.txt"
Try {
    Out-File -FilePath $file -NoClobber -ErrorAction Stop
    Write-Output "File created successfully"
} Catch [System.IO.IOException]{
    Write-Host "Error: $($_.Exception.Message)"
}

PRODUCCIÓN :

File created successfully

El modificador -NoClobber en el cmdlet Out-File evita que se sobrescriba un archivo existente. Cuando aparece el modificador -NoClobber, si ya existe un archivo en la ruta de archivo especificada, Out-File no creará ni sobrescribirá el archivo y devolverá un error. Este modificador ayuda cuando queremos asegurarnos de no sobrescribir accidentalmente un archivo importante.

Por ejemplo, utilizamos el modificador -NoClobber en el cmdlet Out-File en lugar de instrucciones voluminosas if-else para crear un archivo si así fuera. no existe.

Usar frases ingeniosas

Para crear un archivo si no existe, utilice el resumen de la siguiente manera:

  • Utilice Test-Path u otros cmdlets para comprobar si el archivo existe. Si es así, devolverá true.
  • Utilice el operador lógico -eq para comprobar si el comando mencionado anteriormente devuelve false. Si es así, utilice el cmdlet Out-File o New-Item para crear el archivo.

Utilice frases ingeniosas:

$file = "D:\test.txt"
(Test-Path -Path $file) -eq $false | New-Item -ItemType File -Path $file -ErrorAction SilentlyContinue

PRODUCCIÓN :

    Directory: D:\
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         1/16/2023   4:48 PM              4 test.txt

Podemos reemplazar el cmdlet Test-Path con Get-Item u otros cmdlets que analizamos mientras explicamos la sección de código para usar la declaración if-else . Además, el cmdlet Out-File puede reemplazar al cmdlet New-Item. El objetivo principal de esta sección es escribir un script de una línea que pueda crear un archivo si no existe.

En PowerShell, -eq es un operador lógico que compara la igualdad de dos valores. Devuelve $True si los valores son iguales y $False si no lo son.

Por ejemplo, verificamos si la salida del cmdlet Test-Path era igual al valor False. Si el archivo ya existe, el cmdlet Test-Path devuelve True y la comparación devuelve False, pero si el archivo no existe, el El cmdlet Test-Path devuelve False y la comparación devuelve True.

Si el archivo no existía, el script lo creó utilizando el cmdlet New-Item. Sin embargo, el modificador -ErrorAction SilentlyContinue impidió que el cmdlet New-Item generara una excepción si el archivo ya existe. Como resultado, la línea de comando no mostrará el resultado si el archivo ya existe.

Artículos relacionados