Sobrescribir archivo en PowerShell [3 formas]
Usando el cmdlet Set-Content
Utilice el cmdlet Set-Content para sobrescribir un archivo en PowerShell.
Utilice el cmdlet Set-Content con el parámetro -Value:
Set-Content -Path E:\Test\File1.txt -Value "Greetings"Contenido del Archivo1.txt:
GreetingsInicialmente, el archivo File1.txt tenía Hi! como contenido, pero luego se sobrescribió y ahora contiene el contenido como se muestra en el resultado anterior. El Set-Content se conoce como cmdlet de procesamiento de cadenas, que utilizamos para sobrescribir el contenido de un archivo existente. Por ejemplo, digamos que proporcionó una ruta para un archivo que no existe; luego, Set-Content creará ese archivo y escribirá el contenido especificado.
Puede confundirlo con el cmdlet Add-Content, pero existe una diferencia muy clara entre los cmdlets Set-Content y Add-Content. Set-Content reemplaza el contenido existente mientras que Add-Content agrega contenido al archivo especificado.
Usamos el parámetro -Path para especificar la ruta del archivo/elemento que recibirá el contenido enviado usando el parámetro -Value. Tenga en cuenta que podemos utilizar caracteres comodín al proporcionar la ruta del archivo. Por ejemplo, queremos sobrescribir cada archivo de texto cuyo nombre comience con la palabra File; vea el siguiente ejemplo.
Utilice Set-Content para sobrescribir varios archivos de texto:
Set-Content -Path E:\Test\File*.txt -Value "Hello World"Contenido de todos los archivos *.txt:
Hello WorldAquí, utilizamos un asterisco (*) para sobrescribir todos los archivos de texto cuyos nombres tengan cualquier número de caracteres después de la palabra File; recuerde, cada nombre de archivo debe comenzar con File y terminar con .txt; en el medio, podemos tener cualquier número de caracteres, esto es lo que se supone que debe hacer *. Todos los comandos de ejemplo anteriores utilizan el parámetro -Value para enviar contenido al cmdlet Set-Content, pero ¿sabías que podemos enviar contenido mediante la canalización? ¿Cómo? Vea el siguiente ejemplo.
Utilice el cmdlet Set-Content con Pipline:
"Write This Content" | Set-Content -Path E:\Test\File1.txtContenido del Archivo1.txt:
Write This ContentAquí, utilizamos la canalización (|) para reenviar contenido al Set-Content, que se sobrescribirá en el archivo de texto proporcionado. Podemos usar el cmdlet Get-Content de la siguiente manera para ver el contenido más reciente del archivo File1.txt.
Utilice el cmdlet Obtener contenido:
Get-Content -Path E:\Test\File1.txtContenido del Archivo1.txt:
Write this Content
Supongamos que tenemos el requisito de preguntar a los usuarios si aún desean sobrescribir el archivo. En ese caso, podemos usar el parámetro -Confirm como se indica a continuación para avisar al usuario y asegurarnos de que aún desee sobrescribir el archivo.
Utilice el cmdlet Set-Content con el parámetro -Confirm:
Set-Content -Path E:\Test\File1.txt -Value "Greetings" -ConfirmPRODUCCIÓN :
Confirm
Are you sure you want to perform this action?
Performing the operation "Set Content" on target "Path: E:\Test\File1.txt".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): Y
Confirm
Are you sure you want to perform this action?
Performing the operation "Clear Content" on target "Item: E:\Test\File1.txt".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): YPor el contrario, si debemos sobrescribir el archivo en cualquier condición, podemos usar el parámetro -Force de la siguiente manera. Este parámetro obliga al cmdlet a sobrescribir el archivo incluso si el archivo es de solo lectura. Tenga en cuenta que este parámetro no anula las restricciones de seguridad.
Utilice el cmdlet Set-Content con el parámetro -Force:
Set-Content -Path E:\Test\File1.txt -Value "Greetings" -ForceContenido del Archivo1.txt:
GreetingsTambién podemos usar el alias sc del cmdlet Set-Content para reducir las pulsaciones de teclas. Puede conocer más parámetros valiosos en esta página para utilizarlos según las necesidades de su proyecto.
Usando el cmdlet Out-File
Utilice el cmdlet Out-File para sobrescribir un archivo en PowerShell.
Utilice el cmdlet Out-File:
"Some content" | Out-File -FilePath E:\Test\File1.txtContenido del Archivo1.txt:
Some content
Primero, escribimos el contenido que queríamos escribir en el archivo. Luego, este contenido se reenvió al cmdlet Out-File mediante canalización (|), que utilizamos para enviar el resultado (recibido del proceso anterior) al archivo dado. . Utiliza implícitamente el sistema de formato de PowerShell para escribir en el archivo especificado.
Al utilizar el cmdlet Out-File, el archivo especificado obtendrá la representación de visualización exacta como terminal/consola, lo que significa que puede no ser adecuado para diversos procesos programáticos hasta que todos los objetos de entrada sean cadenas.
Al igual que Set-Content, Out-File también creará el archivo especificado si no existe y escribirá el contenido en él. También tiene los parámetros -Force y -Confirm que funcionan igual que aprendimos usando el cmdlet Set-Content. Además, el Out-File tiene otro parámetro interesante, -NoClobber.
-NoClobber evita que el archivo existente se sobrescriba e informa al usuario que el archivo que desea sobrescribir ya existe. Por lo tanto, si no desea sobrescribir archivos ya existentes, no olvide utilizar el parámetro -NoClobber porque el comportamiento predeterminado del cmdlet Out-File es sobrescribe el archivo sin previo aviso.
Utilice el cmdlet Out-File con el parámetro -NoClobber:
"Some content" | Out-File -FilePath E:\Test\File1.txt -NoClobberEl comando anterior generará una advertencia que dice: Out-File: El archivo 'E:\Test\File1.txt' ya existe.
NOTA: Al utilizar el cmdlet
Out-File, no podemos utilizar caracteres comodín al especificar la ruta mediante el parámetro-FilePath; de lo contrario, generará una advertencia.
Usando el cmdlet Copiar-elemento
Utilice el cmdlet Copy-Item para copiar todo el contenido del archivo de origen y sobrescribir el archivo de destino en PowerShell.
Contenido del Archivo1.txt:
This is the source sample text.Contenido del archivo 2.txt:
This is the destination sample text.Utilice el cmdlet Copiar elemento:
Copy-Item -Path E:\Test\File1.txt -Destination E:\Test\File2.txt -ForceContenido más reciente de File2.txt:
This is the source sample text.Ya hemos aprendido sobre el parámetro -Force usando el cmdlet Set-Content. Aquí, los parámetros -Path y -Destination indican la ruta del archivo de origen y del archivo de destino, respectivamente. Usamos Copy-Item para copiar el contenido del archivo fuente (File1.txt) y pegarlo en el archivo de destino (File2.txt) mediante sobrescribiendo su contenido anterior.
Copy-Item nos permite usar operadores comodín mientras especificamos la ruta, pero tengamos en cuenta lo que sucede detrás de escena para evitar resultados inesperados. Por ejemplo, si cree que el siguiente código copiará el contenido de varios archivos de origen y lo pegará en el archivo de destino, debe corregir su comprensión.
Utilice el cmdlet Copiar elemento:
Copy-Item -Path E:\Test\SampleFile*.txt -Destination E:\Test\File2.txt -ForceEsto se debe a que aprendimos que el cmdlet Copy-Item pega el contenido nuevo sobrescribiendo el contenido anterior, lo que significa que pegará el contenido de cada archivo fuente sobrescribiendo el contenido anterior. De esta forma, sólo tendremos el contenido del último archivo fuente, no todos los archivos fuente.
Hemos aprendido tres formas diferentes de sobrescribir el archivo, pero ¿cuándo utilizar qué método? Para tomar una mejor decisión tenga en cuenta los siguientes puntos:
- Usamos
Copy-Itempara copiar archivos y directorios. - Usamos
Out-Filepara enviar objetos de cadena y que no son de cadena a un archivo de texto y se puede usar para agregar o crear un archivo existente. Otra aplicación puede leer un archivo mientras se ejecutaOut-File. Guarda el elegante formato de salida en el archivo de texto, como se ve en la terminal. - Usamos
Set-Contentpara enviar contenido de tipo cadena a un archivo de texto. Si el contenido no es una cadena, este cmdlet lo convertirá en una cadena antes de escribirlo o enviarlo a un archivo de texto. Otras aplicaciones no pueden leer el archivo mientras se ejecutaSet-Content. Esto guarda una representación más sencilla en el archivo de texto.
