Cómo crear archivos y carpetas con PowerShell

Cuando necesitas crear archivos y carpetas en una PC con Windows, usar la GUI parece la forma más intuitiva de hacerlo. Sin embargo, PowerShell puede crear de forma inteligente múltiples archivos y carpetas en volumen. Esta es una tarea bastante común para casi cualquier profesional de IT, y en esta guía te mostraremos cómo crear tus archivos y carpetas usando el cmdlet de PowerShell New-Item.

Cómo crear un archivo en PowerShell

Una vez que comprendas cómo usar PowerShell, la velocidad con la que puedes crear cosas hace que las tareas mundanas sean mucho más fáciles. Vamos a sumergirnos y ver cómo crear archivos y carpetas usando los cmdlets New-Item, Add-Content y Test-Path.

Publicidad

Cómo crear un archivo con el comando New-Item

Crear un nuevo archivo con PowerShell se puede hacer con el cmdlet New-Item. Si quisiera crear un nuevo archivo de texto llamado MyTextFile.txt, la sintaxis sería la siguiente:

New-Item MyTextFile.txt
Creating a file using the New-Item cmdlet

En el ejemplo anterior, PowerShell creó un archivo en el directorio c:. Sin embargo, puedo especificar una ubicación diferente simplemente agregando la ruta al nombre del archivo. Aquí hay un ejemplo a continuación:

New-Item c:\tools\MyNewFile.txt
Creating a file in a different folder

Nota que en la captura de pantalla anterior, estaba en el directorio temp, pero creé el archivo en el directorio tools. Una vez que estés familiarizado con la creación de un nuevo archivo, solo es una línea más de código para comenzar a crear archivos en masa.

Aquí tienes un ejemplo de cómo utilizar un simple bucle ForEach para crear 10 archivos, todos con un nombre de archivo similar.

Publicidad

(1..10) | ForEach-Object {New-item “MyNewFile$_.txt”}
Create multiple files with a simple loop

Si es necesario, también puedes usar el cmdlet Get-ChildItem para listar todos los archivos en ese directorio.

Crea un archivo después de verificar que aún no existe

También puedes utilizar PowerShell para verificar si los archivos ya existen antes de intentar crearlos. Hay varias formas de comprobar si los archivos ya existen con PowerShell, pero la más fácil es utilizar el cmdlet Test-Path.

Como su nombre lo indica, el cmdlet Test-Path puede verificar si un camino existe. Puede comprobar rutas de archivos y/o carpetas. El cmdlet devuelve True si un archivo o carpeta existe, y False si no existe.

En el ejemplo a continuación, estoy verificando si el archivo llamado MyTextFile.txt existe. Dado que el archivo existe, el cmdlet Test-Path devolvió True:

Publicidad

Test-Path MyTextFile.txt
Using test-Path to see if a file exists

Una vez que entiendas la lógica para verificar si un archivo existe, puedes usar el comando Test-Path con una instrucción If para crear un archivo cuando Test-Path devuelve false. Te mostraré cómo hacerlo en el ejemplo a continuación:

  • Aquí, estoy utilizando una variable llamada $FileName para el nombre del archivo para que mi código sea más fácil de leer y evitar la escritura repetitiva.
  • Luego, he añadido una instrucción If para verificar un archivo. Los paréntesis contienen la condición a probar. Las llaves contienen el código que quiero ejecutar si la prueba es verdadera. Observa que el operador -not está en uso en mi ejemplo.
  • El código dice que si el archivo llamado MyTextFile.txt no existe, entonces el archivo debe ser creado. Una instrucción If solo se ejecuta si la condición es verdadera.
  • I have added the -not parameter to change the condition to match on False instead of True.
$Filename = "MyTextFile.txt"
if (-not(test-path $Filename)){new-item $FileName}
Checking if a file exists and creating a new file if it doesn’t exist

Recorramos juntos la salida para saber exactamente lo que sucedió: En el ejemplo 1, ejecuté mi código y no ocurrió nada; observa que no hay salida. Eso se debe a que en mi directorio c:, ya existe un archivo llamado MyTextFile.txt. Dado que existe, la instrucción if no ejecutó el código.

En el ejemplo 2, sin embargo, puedes notar que cambié el directorio del directorio temporal al directorio de herramientas. Dado que no hay un archivo llamado MyTextFile.txt en este último, cuando ejecuto el código por segunda vez, la declaración if ejecuta el cmdlet New-Item y crea un nuevo archivo.

Cómo escribir datos en un archivo nuevo o existente

Ya hemos visto cómo crear archivos nuevos con PowerShell. Sin embargo, si observas las capturas de pantalla anteriores, notarás que el tamaño de todos los archivos nuevos es de 0 bytes. Eso se debe a que el cmdlet New-Item realmente crea archivos vacíos.

Si deseas agregar datos a un archivo existente, puedes usar el cmdlet Add-Content. La sintaxis es fácil de comprender, al igual que para el comando New-Item. Aquí tienes un ejemplo a continuación:

Add-Content mytextfile.txt -Value "Here's some sample text written via PowerShell"

Luego, puedo verificar mi archivo usando el cmdlet Get-Content.

get-content .\mytextfile.txt
Adding content to an existing file

I can also open the file in PowerShell using the Invoke-Item cmdlet.

Invoke-Item .\mytextfile.txt
Opening a file with the Invoke-Item cmdlet

Cómo sobrescribir un archivo existente

Si PowerShell puede usarse para crear archivos nuevos, también podemos usarlo para reemplazar archivos existentes en una carpeta. PowerShell te advertirá si intentas crear un archivo mientras ya existe uno con el mismo nombre.

Se puede observar en el ejemplo siguiente el mensaje de error que PowerShell muestra cuando intento crear un archivo llamado MyNewFile3.txt.

New-item .\MyNewFile3.txt
PowerShell warns of an existing file with the same name

Sin embargo, si deseo reemplazar ese archivo, puedo hacerlo agregando el parámetro -force, que sobrescribirá cualquier archivo existente con el mismo nombre.

new-item .\MyNewFile3.txt -Force
Overwriting a file using the -force parameter

Cómo crear una carpeta en PowerShell

Acabamos de repasar las diferentes formas de crear archivos en PowerShell. Ahora, veamos cómo crear carpetas con los comandos New-Item y md.

Crear una carpeta con el comando New-Item

Crear carpetas con PowerShell también es una tarea sencilla con el mismo cmdlet New-Item que utilizamos anteriormente para crear archivos. Todo lo que necesitamos es especificar el parámetro -ItemType.

El parámetro -ItemType controla si el cmdlet New-Item crea un archivo, un directorio (carpeta), un enlace simbólico, un punto de unión o un enlace físico. Puedes encontrar más información sobre estas opciones en la página de Microsoft Docs para New-Item.

Crear una nueva carpeta con PowerShell es similar a crear un archivo nuevo. Aquí tienes un ejemplo con el comando siguiente:

new-item TestFolder1 -ItemType Directory
Creating a folder using the New-Item cmdlet

Cree una carpeta con el comando md

PowerShell es ahora un lenguaje multiplataforma, lo que significa que se puede ejecutar en Windows, macOS o Linux. El proceso de crear archivos y carpetas en Windows, Linux y macOS desde la línea de comandos es similar.

Sin embargo, cada SO tiene sus propios comandos con nombres diferentes para realizar las mismas tareas. Por ejemplo, para crear una nueva carpeta llamada NuevaCarpeta, cada SO tiene una sintaxis similar con nombres de cmdlets diferentes: En DOS, la sintaxis es ‘MD NuevaCarpeta’, pero en Linux es ‘MKDIR NuevaCarpeta’.

Microsoft ha tomado muchos de los nombres populares de cmdlets de otros lenguajes y los ha incluido en PowerShell. Comandos como MKDIR o MD en realidad no existen en PowerShell: en su lugar, son alias de sus homólogos de PowerShell que hacen lo mismo.

En PowerShell, MD es un alias de MKDIR. Además, MKDIR es un alias del cmdlet New-Item. Eso significa que si escribe MD, MKDIR o New-Item en PowerShell, todos esos comandos tienen el mismo efecto: ejecutar el cmdlet New-Item.

Aquí hay un ejemplo rápido para resaltar esa funcionalidad.

md Demofile1.txt
mkdir demofile2.txt
new-item demofile 3.txt
Creating new files with PowerShell aliases

En los ejemplos anteriores, puede ver que creé tres archivos usando los varios alias y nombres de cmdlet para New-Item. Todos los alias funcionan exactamente igual que escribir New-Item.

Conclusión

PowerShell permite muchas formas de crear archivos y carpetas. El cmdlet New-Item hace que sea increíblemente fácil crear archivos y carpetas.

Microsoft ha incluido alias que se refieren a comandos de sistemas operativos populares como DOS y Linux en PowerShell para ayudar a los administradores a sentirse como en casa. También podemos utilizar bucles para crear archivos y carpetas a escala y declaraciones lógicas como If para asegurarnos de que solo creamos archivos que aún no existen.

También podemos asegurarnos de que los archivos que ya existen no se sobrescriban por código a menos que queramos que sean reemplazados. Todas estas opciones nos permiten construir scripts para automatizar el tedioso proceso de gestionar archivos y carpetas.

PowerShell es una herramienta muy versátil y ahora que has aprendido cómo crear archivos y carpetas con ella, puedes consultar nuestra guía anterior sobre usar PowerShell para eliminar archivos y carpetas.

Source:
https://petri.com/powershell-how-to-create-files-folders/