Estoy tratando de escribir un script por lotes simple que copia algunos archivos del %userprofile%\Documents
directorio. Estoy probando el script en mi máquina, pero después de algunas fallas me di cuenta de que moví los datos de mi usuario a una partición separada . Por lo tanto, %userprofile%\Documents
está vacío y (obviamente) no se copia nada.
Ya probé otras variables de entorno como %homedrive%
y %homepath%
, pero todavía apuntan al estándarC:\...
¿Hay alguna manera de averiguar la unidad real utilizada para los datos del usuario?
Estoy usando Windows 10.
¡Gracias!
EDITAR
Como señaló Ƭᴇcʜιᴇ007, no moví los datos del usuario a otra partición, sino que simplemente reubiqué las carpetas "principales" (Documentos, Videos, ...) a algunas carpetas correspondientes en otra partición: haga clic derecho en (p. Ej. ) Documentos, Propiedades, Ruta.
¿Cómo puedo encontrar la ruta de una carpeta de documentos que se ha reubicado de esta manera?
fuente
Respuestas:
Desafortunadamente, no hay una variable de entorno simple que pueda verificar desde un script por lotes si ha redirigido esto desde la ruta predeterminada en relación con su perfil. Puede ver la lista completa de variables de entorno (incluidas algunas no documentadas) aquí:
Otra cosa a tener en cuenta es que la redirección de carpetas incluso le permite moverlos a un recurso compartido de red. No tiene que haber una "unidad" que pueda usar todo; podría ser una ruta UNC.
La buena noticia es que la información que desea está disponible en el registro en la siguiente ubicación:
Hay un conjunto completo de carpetas que puede mover en esa
User Shell Folders
tecla, pero para leer la carpeta Mis documentos aquí usando Windows Batch se ve así:En mi máquina, esto produce el siguiente resultado, que puede ser más o menos útil para usted según lo que necesite y lo bueno que sea con los scripts de Windows Batch:
También puedes probar vbscript:
o Powershell:
Eventualmente, esto también puede estar disponible a través de bash en Windows (¡de verdad!), Pero aún no he visto cómo hacerlo de una manera que sea consistentemente precisa.
fuente
Suponiendo que tiene acceso de escritura a la carpeta actual o a alguna ubicación existente conocida en la computadora ... ¡puede usar PowerShell!
La
Environment.GetFolderPath
función puede obtener la ruta del sistema de archivos de ubicaciones conocidas , incluida la carpeta Documentos. Este comando de PowerShell imprime la ruta de Documentos:Se puede escribir en un archivo con el
Out-File
cmdlet. El operador de redirección>
realmente no funciona aquí porque produce un archivo de texto Unicode con una BOM, que es difícil de trabajar en el procesador por lotes.Ese archivo se puede leer en una variable por lotes con
set /p
. Poniendo todo junto, obtenemos este fragmento de secuencia de comandos por lotes:La ruta a la carpeta Documentos del usuario ahora se puede expresar como
%DOCSPATH%
.fuente
Tengo la respuesta confiable. Combinación de powershell que devuelve la respuesta a dos
fuente
$
en un nombre de variable CMD. Pero sabes que es un uso poco común, ¿verdad?Bueno, es bastante simple :)
La ubicación de la carpeta del escritorio se enumera aquí:
o incluso más simple en PowerShell
fuente