Estou tentando escrever um script em lote simples que copia alguns arquivos do %userprofile%\Documents
diretório. Estou testando o script na minha máquina, mas após algumas falhas, percebi que movi os dados do meu usuário para uma partição separada . Portanto, %userprofile%\Documents
está vazio e (obviamente) nada é copiado.
Eu já tentei outras variáveis de ambiente como %homedrive%
e %homepath%
, mas elas ainda apontam para o padrãoC:\...
Existe uma maneira de descobrir a unidade real usada para os dados do usuário?
Estou usando o Windows 10.
Obrigado!
EDITAR
Como apontado por Ƭᴇcʜιᴇ007, não movi os dados do usuário para outra partição, mas apenas mudei as pastas "principais" (Documentos, Vídeos, ...) para algumas pastas correspondentes em outra partição: clique com o botão direito do mouse em (por exemplo, ) Documentos, Propriedades, Caminho.
Como posso descobrir o caminho de uma pasta de documentos que foi realocada dessa maneira?
fonte
Respostas:
Infelizmente, não há uma variável de ambiente simples que você possa verificar em um script em lote se você a redirecionou 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:
Outro aspecto a ter em mente é que o redirecionamento de pasta permite até movê-los para um compartilhamento de rede. Não precisa haver uma "unidade", você pode usar tudo; 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:
Você pode mover um conjunto inteiro de pastas nessa
User Shell Folders
chave, mas ler a pasta Meus Documentos aqui usando o Windows Batch é assim: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 da qualidade dos scripts do Windows Batch:
Você também pode tentar o vbscript:
ou PowerShell:
Isso também pode estar disponível via bash no Windows (realmente!), Mas ainda não vi como fazê-lo de uma maneira que seja consistentemente precisa.
fonte
Supondo que você tenha acesso de gravação à pasta atual ou a um local conhecido no computador ... você pode usar o PowerShell!
A
Environment.GetFolderPath
função pode obter o caminho do sistema de arquivos de locais conhecidos , incluindo a pasta Documentos. Este comando do PowerShell imprime o caminho de documentos:Pode ser gravado em um arquivo com o
Out-File
cmdlet. O operador de redirecionamento>
realmente não funciona aqui porque produz um arquivo de texto Unicode com uma lista técnica, difícil de trabalhar no processador em lote.Esse arquivo pode ser lido em uma variável de lote com
set /p
. Juntando tudo, obtemos este fragmento de script em lote:O caminho para a pasta Documentos do usuário agora pode ser expresso como
%DOCSPATH%
.fonte
Eu tenho a resposta confiável. Combinação de PowerShell que retorna a resposta dos
fonte
$
em um nome de variável CMD. Mas você sabe que é um uso incomum, certo?Bem, é bem simples :)
O local da pasta da área de trabalho está listado aqui:
ou ainda mais simples no PowerShell
fonte