Prompt dei comandi di Windows: ottieni la cartella Documenti dell'utente trasferito


8

Sto cercando di scrivere un semplice script batch che copia alcuni file dalla %userprofile%\Documentsdirectory. Sto testando lo script sul mio computer, ma dopo alcuni errori mi sono reso conto di aver spostato i dati del mio utente in una partizione separata . Pertanto, %userprofile%\Documentsè vuoto e (ovviamente) nulla viene copiato.

Ho già provato altre variabili d'ambiente come %homedrive%e %homepath%, ma puntano ancora allo standardC:\...

Esiste un modo per scoprire l' unità effettiva utilizzata per i dati dell'utente?

Sto usando Windows 10.

Grazie!

MODIFICARE

Come sottolineato da Ƭᴇcʜιᴇ007, non ho spostato i dati dell'utente in un'altra partizione, ma ho semplicemente trasferito le cartelle "principali" (Documenti, Video, ...) in alcune cartelle corrispondenti su un'altra partizione: fare clic con il tasto destro del mouse (ad es. ) Documenti, Proprietà, Percorso.

Come posso scoprire il percorso di una cartella documenti che è stata trasferita in questo modo?


2
% userprofile% dovrebbe avere la cartella giusta indipendentemente da dove l'hai inserita, purché tu abbia riposizionato correttamente le cartelle del profilo, dovrebbe essere accurata. Quindi come l'hai spostato esattamente sull'altra partizione?
Ƭᴇcʜιᴇ007,

Ok, sinceramente non me lo ricordavo, quindi ho sfogliato un po 'e finalmente ho scoperto cosa ho fatto. Ho fatto clic con il tasto destro del mouse sulle cartelle "principali" (Documenti, Video, ecc.), Selezionato Proprietà, selezionato la scheda Percorso e modificato il percorso. (Sto usando la versione italiana di Windows e, mentre traduco a malapena i nomi che vedo sul mio schermo, alcune parole potrebbero essere diverse). Quindi avevi ragione,% userprofile% non sta facendo nulla di male. Ma la domanda è ancora: come posso trovare il percorso effettivo della cartella Documenti "principale"?
Alessandro,

Quindi penso che stai confondendo la tua "libreria" di Documenti con la cartella Documenti nel percorso del tuo profilo utente. Due cose diverse ...
Ƭᴇcʜιᴇ007,

C'è un modo per scoprire il percorso della cartella Documenti, considerando che è stato trasferito in questo modo?
Alessandro,

Risposte:


5

Sfortunatamente, non esiste una semplice variabile d'ambiente che puoi controllare da uno script batch se lo hai reindirizzato dal percorso predefinito relativo al tuo profilo. Puoi vedere l'elenco completo delle variabili d'ambiente (incluse alcune non documentate) qui:

http://ss64.com/nt/syntax-variables.html

Un'altra cosa da tenere a mente è che il reindirizzamento delle cartelle consente persino di spostarli in una condivisione di rete. Non ci deve essere un "disco" che puoi usare tutto; potrebbe essere solo un percorso UNC.

La buona notizia è che le informazioni desiderate sono disponibili nel registro nella seguente posizione:

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ User Shell Folders \ Personal

C'è un intero set di cartelle che puoi spostare in quella User Shell Folderschiave, ma per leggere la cartella Documenti qui usando Windows Batch è così:

reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Personal

Sulla mia macchina questo produce il seguente output, che può essere più o meno utile per te a seconda di cosa hai bisogno e quanto sei bravo con gli script di Windows Batch:

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ User Shell Folders
    Personale REG_EXPAND_SZ C: \ Users \ joel \ Documents

Puoi anche provare vbscript:

Set wshshell = CreateObject("WScript.Shell")
Documents = wshShell.SpecialFolders("MyDocuments")

o Powershell:

[Environment]::GetFolderPath('MyDocuments')

Questo potrebbe eventualmente essere disponibile anche tramite bash su Windows (davvero!), Ma non ho ancora visto come farlo in un modo che sarà costantemente accurato.


3

Supponendo che tu abbia accesso in scrittura alla cartella corrente o ad una posizione esistente esistente sul computer ... puoi usare PowerShell!

La Environment.GetFolderPathfunzione può ottenere il percorso del file system di percorsi noti , inclusa la cartella Documenti. Questo comando di PowerShell stampa il percorso Documenti:

[Environment]::GetFolderPath('MyDocuments')

Può essere scritto in un file con il Out-Filecmdlet. L'operatore di reindirizzamento in >realtà non funziona qui perché produce un file di testo Unicode con una distinta componenti, che è difficile da lavorare nel processore batch.

[Environment]::GetFolderPath('MyDocuments') | Out-File 'docspath.tmp' -Encoding ascii

Quel file può essere letto in una variabile batch con set /p. Mettendo tutto insieme, otteniamo questo frammento di script batch:

powershell -Command "[Environment]::GetFolderPath('MyDocuments') | Out-File 'docspath.tmp' -Encoding ascii"
set /p DOCSPATH=< docspath.tmp
del docspath.tmp

Il percorso della cartella Documenti dell'utente ora può essere espresso come %DOCSPATH%.


1

Ho la risposta affidabile. Combinazione di powershell che restituisce la risposta a dos

for /f "delims=" %%a in ('powershell.exe -command "& {write-host $([Environment]::GetFolderPath('MyDocuments'))}"') do Set "$Value=%%a"
Echo Value received from Powershell : %$Value%

Non sapevo che è possibile utilizzare un nome $in una variabile CMD. Ma sai che è un uso non comune, giusto?
Scott,

0

Bene è abbastanza semplice :)

La posizione della cartella del desktop è elencata qui:

Cartelle \ HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Shell

o anche più semplice in PowerShell

$ DesktopPath = [Environment] :: GetFolderPath ("Desktop")

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.