Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Как правильно указать путь сохранения? (http://forum.oszone.net/showthread.php?t=344806)

isugil 12-04-2020 20:48 2916914

Как правильно указать путь сохранения?
 
У меня есть папка (123) , в папке находится два файла, один это qwerty.jpg, а второй это bat.файл.
Задача скопировать с помощью батника jpg файл, на рабочий стол пользователя. Папка (123) с файлами изначально будет скопирована в группе в школе и перенесена на компьютеры около 20 пользователям.
Я в батнике могу прописать например следующий код
xcopy qwerty.jpeg; C:\Users\User\Desktop /E /C /H /R /K /Y /Z - НО ПРОБЛЕМА В ТОМ ЧТО НЕ У ВСЕХ НА КОМПАХ ПРОПИСАН (USER) У НЕКОТОРЫХ ADMIN ИЛИ ЧТО ТО ДРУГОЕ.
Вопрос: как установить файл на рабочий стол, если у каждого компа разные пути до рабочего стола , что прописать в батнике?

iglezz 12-04-2020 22:38 2916926

Код:

%userprofile%\Desktop

isugil 12-04-2020 23:05 2916931

Спасибо!)

YuS_2 13-04-2020 07:21 2916955

Цитата:

Цитата iglezz
%userprofile% »

Проблема в том, что каталог Desktop, вполне может быть перенесен из профайла пользователя, в другое место...
Не помню, как в cmd проще получить реальный путь... вроде бы, через реестр...
Добавлено:
Да, заглянул в шпаргалку и там вот так у меня записано:
Код:

REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
это весь список, а десктоп:
Код:

REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop
- и распарсить строку через цикл for


А в powershell можно так:
Код:

[environment]::getfolderpath('Desktop')
Ну и вообще, специальные каталоги можно так проверить:
Код:

[enum]::getnames([environment+specialfolder])|%{[environment]::getfolderpath($_)}

Iska 13-04-2020 11:08 2916970

Цитата:

Цитата YuS_2
Проблема в том, что каталог Desktop, вполне может быть перенесен из профайла пользователя, в другое место... »

Ну, так и задача по факту не для пакетных файлов (по поводу запроса из реестра — я всё ещё помню прелести при использовании разных версий reg.exe). Посему — да: WSH/Posh.

YuS_2 13-04-2020 13:59 2916996

Цитата:

Цитата Iska
я всё ещё помню прелести при использовании разных версий reg.exe »

Это да, микрософт умеет удивлять, особенно там, где меньше всего ожидаешь :)

Vadikan 13-04-2020 15:52 2917009

Цитата:

Цитата YuS_2
Проблема в том, что каталог Desktop, вполне может быть перенесен из профайла пользователя, в другое место... »

Нет тут проблемы. Если переносится грамотно (например, вкладка Расположение), допустим в C:\temp, то в USF путь поменяется на %systemdrive%\temp. https://i.imgur.com/TRddWp0.png
А если переносится каким-то немыслимо кривым методом, то чтение из USF (и в т.ч. пош) не поможет.

Iska 13-04-2020 18:41 2917029

Vadikan, речь шла про то, что простая методика вида %UserProfile%\Desktop уже не сгодится (строго говоря, и она тоже не годится — для старых ОС).

YuS_2 13-04-2020 19:13 2917035

Цитата:

Цитата Vadikan
Нет тут проблемы. Если переносится грамотно (например, вкладка Расположение), допустим в C:\temp, то в USF путь поменяется на %systemdrive%\temp. »

Почему нет проблемы?
Проблема в том, что путь поменяется к каталогу Desktop:

При этом не изменяется путь к профайлу пользователя %UserProfile%. Поэтому после перемещения, по этому пути:
Цитата:

Цитата iglezz
%userprofile%\Desktop »

рабочего стола мы уже не найдем:

его там физически нет. Перенесен, как раз, через вкладку "Расположение"...

Vadikan 13-04-2020 22:50 2917071

А, так то да, сорри


Время: 23:07.

Время: 23:07.
© OSzone.net 2001-