Я пытаюсь написать простой пакетный скрипт, который копирует некоторые файлы из %userprofile%\Documents
каталога. Я тестирую скрипт на своем компьютере, но после некоторых сбоев я понял, что перенес данные своего пользователя в отдельный раздел . Таким образом, %userprofile%\Documents
является пустым , и (очевидно) ничего не копируется.
Я уже пробовал другие переменные окружения, такие как %homedrive%
и %homepath%
, но они все еще указывают на стандартC:\...
Есть ли способ узнать фактический диск, используемый для данных пользователя?
Я использую Windows 10.
Спасибо!
РЕДАКТИРОВАТЬ
Как указал Ƭᴇcʜιᴇ007, я не перемещал данные пользователя в другой раздел, а просто переместил «основные» папки (Документы, Видео, ...) в некоторые соответствующие папки в другом разделе: щелкните правой кнопкой мыши (например, ) Документы, Свойства, Путь.
Как я могу узнать путь к папке с документами, которая была перемещена таким образом?
источник
Ответы:
К сожалению, нет простой переменной среды, которую вы можете проверить из пакетного скрипта, если вы перенаправили ее из пути по умолчанию относительно вашего профиля. Вы можете увидеть полный список переменных среды (включая некоторые недокументированные) здесь:
Следует также помнить, что перенаправление папок позволяет даже перемещать их в общий сетевой ресурс. Там не должно быть "диск", который вы можете использовать все; это может быть просто путь UNC.
Хорошей новостью является то, что нужная вам информация доступна в реестре по следующему адресу:
В этом
User Shell Folders
ключе есть целый набор папок, которые вы можете перемещать , но чтение папки «Мои документы» с помощью Windows Batch выглядит следующим образом:На моей машине это приводит к следующему выводу, который может быть более или менее полезным для вас в зависимости от того, что вам нужно и насколько вы хороши с пакетными сценариями Windows:
Вы также можете попробовать vbscript:
или Powershell:
Это может в конечном итоге быть доступно через bash в Windows, тоже (правда!), Но я еще не видел, как это сделать так, чтобы это было неизменно точно.
источник
Предполагая, что у вас есть права на запись в текущую папку или в какое-либо известное место на компьютере ... вы можете использовать PowerShell!
Environment.GetFolderPath
Функция может получить файл системного пути хорошо известные мест , в том числе в папке Documents. Эта команда PowerShell печатает путь к документам:Его можно записать в файл с помощью
Out-File
командлета. Оператор перенаправления>
здесь не работает, потому что он создает текстовый файл Unicode с спецификацией, с которым трудно работать в пакетном процессоре.Этот файл можно прочитать в пакетную переменную с помощью
set /p
. Собрав все это вместе, мы получим этот фрагмент пакетного скрипта:Путь к папке «Документы» пользователя теперь может быть выражен как
%DOCSPATH%
.источник
У меня есть надежный ответ. Сочетание PowerShell, которое возвращает ответ на DOS
источник
$
имя переменной CMD. Но вы знаете, что это необычное использование, верно?Ну, это довольно просто :)
Расположение папки рабочего стола указано здесь:
или даже проще в PowerShell
источник