Búsqueda de sitios web

Leer archivo en cadena en PowerShell [3 formas]


Uso del cmdlet Get-Content

Podemos usar el cmdlet Get-Content para leer el contenido de un archivo en una cadena.

Utilice el cmdlet Get-Content para leer un solo archivo

Para leer un solo archivo en una cadena en PowerShell:

  • Utilice el cmdlet Get-Content con el parámetro -Raw para leer el contenido del archivo en una cadena.
  • Utilice el método .GetType() para comprobar el tipo de datos del resultado.

Leer un solo archivo:

$file = "D:\abc.txt"
$content = Get-Content -Path $file -Raw
($content.GetType()).Name

PRODUCCIÓN :

String

El cmdlet Get-Content en PowerShell lee el contenido de un archivo u otros objetos de entrada y salida, como la salida de otro cmdlet. El cmdlet devuelve el contenido como una matriz de cadenas. Podemos usarlo para leer archivos de configuración, archivos de registro, archivos CSV o cualquier otro archivo de texto.

Por ejemplo, proporcionamos el parámetro -Path del cmdlet Get-Content con el valor file para leerlo. De forma predeterminada, Get-Content devuelve el contenido del archivo u objeto como una matriz de cadenas, una cadena para cada línea del archivo u objeto.

Usando el parámetro -Raw, el cmdlet Get-Content devuelve todo el contenido del archivo u objeto como una sola cadena. Entonces, para leer el file como una sola cadena, usamos el parámetro -Raw del cmdlet Get-Content y almacenamos el resultado en el archivo variable contenido.

Para comprobar el tipo de content, utilizamos el método GetType() que determina el tipo de un objeto que devuelve el objeto Type. Luego, usamos su propiedad .Name para mostrar el nombre del tipo en la consola.

Utilice el cmdlet Get-Content con bucle forreach para leer varios archivos

Para leer varios archivos en una cadena en PowerShell, utilice el parámetro -join en la salida del cmdlet Get-Content.

Leer varios archivos:

$files = 'D:\a.txt', 'D:\b.txt', 'D:\c.txt'
$content = (Get-Content -Path $files -Raw) -join '`n'
($content.GetType()).Name

PRODUCCIÓN :

String

Podemos leer varios archivos usando el cmdlet Get-Content. Para hacer esto, almacenamos todos los archivos separados por comas en la variable files y los leemos usando el cmdlet Get-Content que discutimos mientras explicamos la sección de código para leer un solo archivo. archivo en una cadena.

El parámetro -join en PowerShell une elementos de una matriz o colección en una sola cadena. Por ejemplo, unimos las salidas del cmdlet Get-Content con el operador n que une las líneas del archivo usando un nuevo separador de línea. Luego aplicamos el método GetType() al content` para verificar su tipo de datos.

No es que el parámetro -Raw funcione solo en las versiones 3.0+ de PowerShell.

Para PowerShell versión 2.0+

Para leer un archivo en una cadena en PowerShell versión 2.0+, reemplace el parámetro -Raw del código mencionado anteriormente con el cmdlet Out-String y una canalización. Operador (|).

Utilice Get-Content con el cmdlet Out-String:

$file = "d:\abc.txt"
$content = (Get-Content -Path $file) | Out-String
($content.GetType()).Name

PRODUCCIÓN :

String

Analizamos el cmdlet Get-Content en las secciones de código mencionadas anteriormente. En esta sección, utilizamos el cmdlet Out-String en lugar del parámetro -Raw para leer el archivo en una cadena.

El cmdlet Out-String convierte la salida de un comando o script en una cadena. Toma la salida de un comando o script y la concatena en una sola cadena. Por ejemplo, pasamos la salida del cmdlet Get-Content al cmdlet Out-String para leer el archivo como una sola cadena.

Tenga en cuenta que el cmdlet -Out-String es más flexible que el parámetro -Raw, ya que podemos usarlo con cualquier cmdlet o script. También puede leer varios archivos sin necesidad del parámetro -join:

Utilice Get-Content con el cmdlet Out-String:

$files = 'D:\a.txt', 'D:\b.txt', 'D:\c.txt'
$content = (Get-Content -Path $files) | Out-String
($content.GetType()).Name    

PRODUCCIÓN :

String

Usando el método [System.IO.File]::ReadAllText()

Para leer un archivo en una cadena en PowerShell, utilice el método [System.IO.File]::ReadAllText().

Utilice el método ReadAllText():

$file = "d:\abc.txt"
$content = [IO.File]::ReadAllText($file)
($content.GetType()).Name

PRODUCCIÓN :

String

System.IO.File es una clase estática en .NET Framework que proporciona varios métodos para trabajar con archivos y directorios en PowerShell, como leer y escribir en archivos, crear, mover y eliminar archivos, y más.

El método ReadAllText() toma el archivo como argumento y devuelve su contenido como una cadena. Usamos ese método para leer el contenido del archivo y lo almacenamos como una sola cadena en la variable content. Para verificar el tipo de datos del archivo, aplicamos el método GetType() en el content que analizamos en la sección de código para usar Get-content. cmdlet.

Utilice el método [System.IO.File]::ReadAllText() con bucle foreach para leer varios archivos

Para leer varios archivos, agregue el resultado de [System.IO.File]::ReadAllText() para cada archivo y envuélvalo dentro del bloque foreach.

Leer varios archivos:

$files = 'D:\a.txt', 'D:\b.txt', 'D:\c.txt'
$contents = ""
foreach ($file in $files) {
    $contents += [System.IO.File]::ReadAllText($file)
}
($contents.GetType()).name

PRODUCCIÓN :

String

El System.IO.File no tiene ningún método incorporado para leer múltiples archivos. Usamos el bucle foreach. Dentro del bucle, utilizamos el método ReadAllText() que lee cada file de la colección files y concatena los resultados en el contenido variable. Por último, verificamos el tipo de datos del contents usando el método GetType() que imprimió String en la consola.

Uso de la notación de variables con el cmdlet Out-String

Para leer el archivo como una sola cadena, utilice la notación de variable.

Utilice la notación de variables con el cmdlet Out-String:

$content = ${d:\abc.txt} | Out-String
($content.GetType()).Name

PRODUCCIÓN :

String

En notación variable, encerramos la ruta del archivo entre llaves precedidas por el símbolo del dólar ($). Devolvió un objeto de matriz que convertimos en una sola cadena usando el cmdlet Out-String. Luego verificamos el tipo de datos del content usando el método GetType().

De manera similar, para leer varios archivos en una sola cadena:

Utilice la notación de variables con el cmdlet Out-String:

$content = ${d:\a.txt}, ${d:\b.txt} | Out-String
($content.gettype()).Name

PRODUCCIÓN :

String

Artículos relacionados