Infelizmente, não há uma variável de ambiente simples que você possa verificar em um script em lote se você redirecionou isso do caminho padrão relativo ao seu perfil. Você pode ver a lista completa de variáveis de ambiente (incluindo algumas não documentadas) aqui:
Outra coisa a ter em mente é que o redirecionamento de pastas permite até mesmo movê-los para um compartilhamento de rede. Não tem que haver uma "unidade", você pode usar todos; pode ser apenas um caminho UNC.
A boa notícia é que as informações que você deseja estão disponíveis no registro no seguinte local:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Personal
Há um conjunto inteiro de pastas que você pode mover na chave User Shell Folders
, mas ler a pasta Meus documentos aqui usando o Windows Batch tem esta aparência:
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Personal
Na minha máquina, isso produz a seguinte saída, que pode ser mais ou menos útil para você, dependendo do que você precisa e do quão bom você é com os scripts de lote do Windows:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders Personal REG_EXPAND_SZ C:\Users\joel\Documents
Você também pode tentar vbscript:
Set wshshell = CreateObject("WScript.Shell")
Documents = wshShell.SpecialFolders("MyDocuments")
ou Powershell:
[Environment]::GetFolderPath('MyDocuments')
Isso pode eventualmente estar disponível via bash no Windows, também (de verdade!), mas eu ainda não vi como fazer isso de uma maneira que seja consistentemente precisa.