about_Path_Syntax
Descripción breve
Describe los formatos de ruta de acceso completa y relativa en PowerShell.
Descripción larga
Todos los elementos de un almacén de datos accesibles a través de un proveedor de PowerShell se pueden identificar de forma única por sus nombres de ruta de acceso. Una ruta de acceso es una combinación del nombre del elemento, el contenedor y los subcontenedores en los que se encuentra el elemento y la unidad de PowerShell a la que se accede a los contenedores.
En PowerShell, los nombres de ruta de acceso pueden ser uno de dos tipos: completo y relativo. Una ruta de acceso completa consta de todos los elementos que componen una ruta de acceso. La sintaxis siguiente muestra los elementos de una ruta de acceso completa:
[<provider>::]<drive>:[\<container>[\<subcontainer>...]]\<item>
El <provider>
marcador de posición hace referencia al proveedor de PowerShell a través del cual se accede al almacén de datos. Por ejemplo, el proveedor FileSystem permite acceder a los archivos y directorios del equipo. Este elemento de la sintaxis es opcional y nunca es necesario porque los nombres de unidad son únicos en todos los proveedores.
El <drive>
marcador de posición hace referencia a la unidad de PowerShell compatible con un proveedor de PowerShell determinado. En el caso del proveedor FileSystem, las unidades de PowerShell se asignan a las unidades de Windows configuradas en el sistema.
Por ejemplo, si el sistema incluye una A:
unidad y una C:
unidad, el proveedor FileSystem crea las mismas unidades en PowerShell.
Después de especificar la unidad, debe especificar los contenedores y subcontenedores que contengan el elemento. Los contenedores deben especificarse en el orden jerárquico en el que existen en el almacén de datos. En otras palabras, debe comenzar con el contenedor primario y, a continuación, el contenedor secundario de ese contenedor primario, repitiendo el patrón para cada contenedor secundario. Además, cada contenedor debe ir precedido de una barra diagonal inversa.
Nota:
PowerShell permite usar barras diagonales inversas o barras diagonales para la compatibilidad con PowerShell en otras plataformas. Esto funciona para los comandos de PowerShell, pero es posible que no funcionen cuando se usan con aplicaciones nativas que solo esperan el separador de directorio nativo. Use [System.IO.Path]::DirectorySeparatorChar
para buscar el carácter usado para la plataforma.
Después de especificar el contenedor y los subcontenedores, debe proporcionar el nombre del elemento, precedido de una barra diagonal inversa. Por ejemplo, el nombre de ruta de acceso completo para el Shell.dll
archivo en el C:\Windows\System32
directorio es el siguiente:
C:\Windows\System32\Shell.dll
En este caso, la unidad a la que se accede a los contenedores es la C:
unidad, el contenedor de nivel superior es Windows
, el subcontenidor es System32
y el elemento es Shell.dll
.
En algunas situaciones, no es necesario especificar una ruta de acceso completa y, en su lugar, puede usar una ruta de acceso relativa. PowerShell permite identificar un elemento en función de su ubicación en relación con la ubicación de trabajo actual.
PowerShell usa las siguientes secuencias de caracteres para especificar rutas de acceso relativas.
- () -
.
Ubicación actual - () -
..
Elemento primario de la ubicación actual - (
\
) - Raíz de la ubicación actual
Los ejemplos siguientes se basan en el directorio de trabajo actual que se establece C:\Windows
en .
- La ruta de acceso
.\System
relativa se resuelve comoC:\Windows\System
- La ruta de acceso
..\Program Files
relativa se resuelve comoC:\Program Files
- La ruta de acceso
\Program Files
relativa se resuelve comoC:\Program Files
- La ruta de acceso
System
relativa se resuelve comoC:\Windows\System
Al usar una ruta de acceso en un comando, puede usar una ruta de acceso completa o una relativa. Por ejemplo, suponga que el directorio de trabajo actual es C:\Windows
. El comando siguiente Get-ChildItem
recupera todos los elementos del C:\TechDocs
directorio:
Get-ChildItem \TechDocs
La barra diagonal inversa indica que se debe usar la raíz de unidad de la ubicación de trabajo actual. Dado que el directorio de trabajo es C:\Windows
, la raíz de la unidad es la C:
unidad. Dado que el TechDocs
directorio se encuentra fuera de la raíz, debe especificar solo la barra diagonal inversa.
Obtiene los mismos resultados mediante la ruta de acceso completa:
Get-ChildItem C:\TechDocs
Independientemente de si usa una ruta de acceso completa o un nombre de ruta de acceso relativa, una ruta de acceso es importante no solo porque busca un elemento, sino también porque identifica de forma única el elemento incluso si ese elemento comparte el mismo nombre que otro elemento en un contenedor diferente.
Por ejemplo, supongamos que tiene dos archivos denominados .Results.txt
El primer archivo está en un directorio denominado C:\TechDocs\Jan
y el segundo está en un directorio denominado C:\TechDocs\Feb
. La ruta de acceso del primer archivo (C:\TechDocs\Jan\Results.txt
) y la ruta de acceso del segundo archivo (C:\TechDocs\Feb\Results.txt
) le permiten distinguir claramente entre los dos archivos.
Compatibilidad con el espacio de nombres de archivo Win32
En Windows, los cmdlets que admiten el proveedor FileSystem también admiten las rutas de acceso que usan el formato de espacio de nombres de archivo Win32. Solo puede usar estas rutas de acceso con el parámetro LiteralPath de los cmdlets.
Las rutas de acceso del espacio de nombres de archivo Win32 tienen el \\?\
prefijo . El prefijo indica a las API de Windows que deshabiliten todo el análisis de cadenas y envíen la cadena que sigue directamente al sistema de archivos. Por ejemplo, si el sistema de archivos admite rutas de acceso y nombres de archivo grandes, puede superar los límites de MAX_PATH que, de lo contrario, aplicarán las API de Windows.
Para obtener más información, vea Espacios de nombres de archivo Win32 en Archivos de nomenclatura, rutas de acceso y espacios de nombres.