1 (изменено: AQZ, 2013-07-08 11:43:12)

Тема: CMD/BAT: Как передать CLSID папки в пути при копировании в эту папку

Необходимо скопировать файлы в Мои Документы. Так как они перенаправлены политиками то при копировании он не находит ее. Как передать clsid для того чтобы скрипт (батник) копировал файлы в нужное место.

2 (изменено: Flasher, 2013-07-09 09:33:15)

Re: CMD/BAT: Как передать CLSID папки в пути при копировании в эту папку

DEL

3

Re: CMD/BAT: Как передать CLSID папки в пути при копировании в эту папку

чтобы скрипт (батник)

Так скрипт или пакетный файл?

4

Re: CMD/BAT: Как передать CLSID папки в пути при копировании в эту папку

Пакетный файл

5

Re: CMD/BAT: Как передать CLSID папки в пути при копировании в эту папку

AQZ пишет:

Как передать clsid для того чтобы скрипт (батник) копировал файлы в нужное место.

Никак, пакетный файл производит копирование на уровне файловой системы и clsid не понимает. Нужно определять физическое расположение нужной папки.
Flasher, не надо было удалять свой ответ: определить средствами WSH расположение папки "Мои документы" для использования в пакетном файле - не худшее решение. А как ещё? читать из реестра? Неплохо, но мне кажется, что в этом случае сложнее учесть все тонкости, например, изменение расположения папки во время текущего сеанса.

Забыл пароль и потерял e-mail.

6

Re: CMD/BAT: Как передать CLSID папки в пути при копировании в эту папку

shiz пишет:

Flasher, не надо было удалять свой ответ

Он по форме несколько выпадает из контекста.

shiz пишет:

А как ещё? читать из реестра?

Почему нет?

reg query "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Personal
shiz пишет:

мне кажется, что в этом случае сложнее учесть все тонкости, например, изменение расположения папки во время текущего сеанса.

И в чём сложность учёта?

7 (изменено: shiz, 2013-07-10 01:42:51)

Re: CMD/BAT: Как передать CLSID папки в пути при копировании в эту папку

Flasher, это действительно будет работать в подавляющем большинстве штантных ситуаций, но всё-таки не во всех теоретически допустимых случаях. Например: удалим параметр "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Personal" и создадим аналогичный в HKLM (это совсем не означает, что у всех пользователей будет одна и та же папка "Мои документы" - параметр может быть расширяемым и учитывать, например, значение %USERNAME%). Удалённые вами приёмы на WSH, по-прежнему бы правильно определяли расположение папки. И создать временный однострочный сценарий WSH и прочесть его вывод не на много сложнее, чем прочесть вывод REG.EXE.

Реймонд Чен пишет:

Теперь для тех из вас, кто сейчас облизывает губы и говорит: "вау, тут есть ключ 'User Shell Folders', который ещё круче, чем 'Shell Folders', ну-ка я его сейчас пощупаю". Я призываю вас проявить сдержанность и не полагаться на этот новый ключ. Просто используйте функцию SHGetFolderPath, которая возвращает путь к любой папке, какую вы только захотите. Пусть ключ "User Shell Folders" покоится в мире. Потому что в Longhorn (прим. пер.: кодовое имя Windows Vista) мы собираемся делать ещё больше всяких вещей с пользовательскими профилями, и я лично буду весьма расстроен, если нам придётся забросить ключ "User Shell Folders", как жертву обратной совместимости, и перейти к новому "Real User Shell Folders".

Забыл пароль и потерял e-mail.

8

Re: CMD/BAT: Как передать CLSID папки в пути при копировании в эту папку

shiz
Я не очень понял чего касалось "Неплохо...". Я полагал, что WSH.
Что касается нештатных ситуаций, то не надо забывать, что запрет WSH в реестре и политиках является такой же нештатной ситуацией, поэтому, как ни крути, тут палка о двух концах.

9

Re: CMD/BAT: Как передать CLSID папки в пути при копировании в эту папку

Flasher пишет:

Я не очень понял чего касалось "Неплохо...".

Непосредственно предшествовавших слов "читать из реестра?"

Забыл пароль и потерял e-mail.

10

Re: CMD/BAT: Как передать CLSID папки в пути при копировании в эту папку

Не сообразил бы. Про реестр не моя идея.