2013-09-05 12 views
6

Robię prosty plik wsadowy, aby kopiować foldery i pliki znajdujące się pod tą samą ścieżką plików wsadowych na pulpit. I łatwo można uzyskać ścieżkę, gdzie plik wsadowy znajduje się używającŚcieżka pulpitu użytkownika w plikach wsadowych

%~dp0 

ale chcę wiedzieć, jak uzyskać ścieżkę pulpitu użytkownika (używam Widows 7 Ultimate)

sugestie?

+0

Musisz podać wersję systemu Windows (* JEŻELI * jesteś pod oknem), pytanie (bez wersji OS) ** nie ma ** unikatowej odpowiedzi. – gmo

Odpowiedz

1

myślę, że ten powinien być ok zbyt

%systemdrive%\Documents and Settings\All Users\Desktop 

Pozdrowienia

+1

@ Jack_111 - Działa na XP, ale nie działa na Win 7. Naprawdę powinieneś zaakceptować odpowiedź Mali, ponieważ jest bardziej ogólna. Twoje rozwiązanie jest również dobre, ale nie każdy ma dostęp do rejestru (nie ma go w moim miejscu pracy). – dbenham

+0

To faktycznie ** działa ** w systemie Windows 7.W celu zapewnienia kompatybilności wstecz "Dokumenty i ustawienia" i powiązane katalogi są odzwierciedlane, więc starsze instalatory będą działały poprawnie. (testowane na Windows 7 x64) –

+1

@ Jack_111 Problem z tym rozwiązaniem polega na tym, że pliki na pulpicie są dostępne dla wszystkich użytkowników. Dzięki temu każdy, kto korzysta z komputera, może uzyskać do nich dostęp, nie tylko użytkownik uruchamiający skrypt. Gdzie odpowiedź Malisa robi dokładnie to, o co prosiłeś: podaje lokalizację pulpitu obecnego użytkownika. – Ichixgo

3

Znalazłem odpowiedź

Regedit /e /a dd.txt  

"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" 

find /i dd.txt "Desktop" >d.txt 
For /F "tokens=2 delims==" %%a in (d.txt) do set mydesktop=%%a 
+0

lub prostsze % USERPROFILE% \ Desktop gdy pulpit jest w profilu użytkownika i jest to powszechne i normalne przypadek –

+1

To odpowiedź została już udzielona przez Mali. Nie próbuj być bohaterem ;-) –

53

Chyba masz pod Windows Environnement, więc %USERPROFILE%\Desktop powinno być ok

+1

Pierwsza odpowiedź, którą napisałem, wydaje mi się, że jest bardziej ogólna i podaje ścieżkę na pulpicie w każdym przypadku (pulpit nie znajduje się w profilu użytkownika), a twoja odpowiedź również działa i napisałem, że w normalnym i zwykłym przypadku pulpit w profilu użytkownika (nigdy nie widziałem pulpitu nie w profilu użytkownika) –

+0

to powinna być zaakceptowana odpowiedź – Abdelouahab

+0

Nie działa na moim laptopie do pracy (Windows 7). Rozwiązanie kgimpela wyprowadza rozwiązanie właściwe ('D: \ Users \% USERNAME% \ Desktop'). Wygląda na to, że '% USERPROFILE %' może być niedokładny w niektórych kontekstach. – Amessihel

15

To jest lokalizacja bieżącego pulpitu użytkowników:

%userprofile%\desktop 
+1

Nie działa, jeśli pulpit został zmieniony gdzie indziej. – Jarryd

10

Jeśli Pulpit lokalizacje w innym folderze tylko będzie to poprawna odpowiedź:

Batch ciąg:

for /f "usebackq tokens=3*" %%D IN (`reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop`) do set DESKTOP=%%D 

V2 (działa ze spacjami) 10.04.2016:

for /f "usebackq tokens=1,2,*" %%B IN (`reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop`) do set DESKTOP=%%D 

Jeśli masz n na ASCII symbole, trzeba także konwertować kodowanie ANSI na OEM, przykładem dla cyrylica:

CHCP 1251 >Nul 
for /f "usebackq tokens=1,2,*" %%B IN (`reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop`) do set DESKTOP=%%D 
CHCP 866 >Nul 
for /f "delims=" %%i IN ('echo %DESKTOP%') do set DESKTOP=%%i 

Następnie wystarczy użyć:

echo %DESKTOP% 
+0

Nie działa, gdy ścieżka ma spacje – user

+0

@user v2 działa, spójrz na wpis, dzięki – kgimpel

+0

Świetnie, dzięki za naprawę, +1 do Ciebie. Dodałem także do twojej odpowiedzi trochę informacji i kod do obsługi kodowania, mam nadzieję, że nie masz nic przeciwko. – user

Powiązane problemy