Próbuję napisać prosty skrypt wsadowy, który kopiuje niektóre pliki z %userprofile%\Documents
katalogu. Testuję skrypt na moim komputerze, ale po kilku awariach zdałem sobie sprawę, że przeniosłem dane użytkownika na osobną partycję . Dlatego %userprofile%\Documents
jest pusty i (oczywiście) nic nie jest kopiowane.
Próbowałem już innych zmiennych środowiskowych, takich jak %homedrive%
i %homepath%
, ale nadal wskazują one na standardC:\...
Czy istnieje sposób, aby dowiedzieć się rzeczywisty dysk używany dla danych użytkownika?
Korzystam z systemu Windows 10.
Dzięki!
EDYTOWAĆ
Jak wskazał Ƭᴇcʜιᴇ007, nie przeniosłem danych użytkownika na inną partycję, ale po prostu przeniosłem „główne” foldery (Dokumenty, Wideo, ...) do niektórych odpowiednich folderów na innej partycji: kliknij prawym przyciskiem myszy (np. ) Dokumenty, właściwości, ścieżka.
Jak mogę znaleźć ścieżkę folderu dokumentów, który został przeniesiony w ten sposób?
źródło
Odpowiedzi:
Niestety, nie ma prostej zmiennej środowiskowej, którą można sprawdzić ze skryptu wsadowego, jeśli przekierowano ją z domyślnej ścieżki względem swojego profilu. Możesz zobaczyć pełną listę zmiennych środowiskowych (w tym niektóre nieudokumentowane) tutaj:
Inną rzeczą, o której należy pamiętać, jest to, że przekierowanie folderów pozwala nawet przenieść je do udziału sieciowego. Nie musi istnieć „dysk”, z którego można korzystać wszystkie; może to być po prostu ścieżka UNC.
Dobrą wiadomością jest to, że potrzebne informacje są dostępne w rejestrze w następującej lokalizacji:
Istnieje cały zestaw folderów, które można przenosić w tym
User Shell Folders
kluczu, ale aby przeczytać tutaj folder Moje dokumenty za pomocą usługi Windows Batch, wygląda to tak:Na moim komputerze generuje to następujące dane wyjściowe, które mogą być mniej lub bardziej przydatne w zależności od tego, czego potrzebujesz i od tego, jak dobry jesteś ze skryptami Windows Batch:
Możesz także wypróbować vbscript:
lub PowerShell:
Może to być ostatecznie dostępne także przez bash na Windowsie (naprawdę!), Ale nie widziałem jeszcze, jak to zrobić w sposób, który będzie konsekwentnie dokładny.
źródło
Zakładając, że masz dostęp do zapisu w bieżącym folderze lub w pewnej znanej istniejącej lokalizacji na komputerze ... możesz użyć programu PowerShell!
Environment.GetFolderPath
Funkcji można uzyskać ścieżkę systemu plików znanych miejscach , w tym w folderze Dokumenty. To polecenie PowerShell drukuje ścieżkę dokumentów:Można go zapisać do pliku za pomocą polecenia
Out-File
cmdlet. Operator przekierowania>
tak naprawdę tu nie działa, ponieważ tworzy plik tekstowy Unicode z zestawieniem komponentów, co jest trudne do pracy w procesorze wsadowym.Ten plik można wczytać do zmiennej wsadowej za pomocą
set /p
. Podsumowując, otrzymujemy ten fragment skryptu wsadowego:Ścieżkę do folderu Dokumenty użytkownika można teraz wyrazić jako
%DOCSPATH%
.źródło
Mam wiarygodną odpowiedź. Kombinacja PowerShell, która zwraca odpowiedź na dos
źródło
$
w nazwie zmiennej CMD. Ale wiesz, że to rzadkie użycie, prawda?Cóż, to całkiem proste :)
Lokalizacja folderu pulpitu znajduje się tutaj:
lub nawet prościej w PowerShell
źródło