PDA

Показать полную графическую версию : Какое значение переменной среды в случае переноса конечной папки?


wiznv
28-12-2012, 12:11
ОС Windows XP (потом будет W7)

Задача: Создать универсальный скрипт для бэкапа с последующим его размножением через GPO

Проблема: Есть папка системная "Мои документы", конечная папка изменилась и находится на D:\Petrov (свойство Мои документы->переместить) хотя по ярлыку Мои документы (в пуске или на раб.столе) попадаем куда нужно.

переменная %HOMEPATH%\Мои документы перемещает в исходную системную папку, а нужно в переназначенную (D:\Petrov). Как определить или может быть создаю универсальную переменную для обозначения именно этой папки (так чтобы работало на всех компьютерах учитывая что названия конечных папок разные)?

p.s. есть хорошая прога - nnbackup, она находит нужную папку. где бы она не была. Значит способ найти папку Мои документы есть но у нее свои переменные, которые естествено не сработают если просто в проводнике открывать. Или нужен путь к ярлыку Мои документы..

Iska
28-12-2012, 13:13
Попробуйте использовать WSH и, возможно, Проводник для получения пути:
WScript.Echo WScript.CreateObject("WScript.Shell").SpecialFolders("MyDocuments")
WScript.Echo WScript.CreateObject("Shell.Application").NameSpace("shell:Personal").self.Path

apozlevich
28-12-2012, 14:50
Ну или через реестр
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

wiznv
29-12-2012, 08:07
Ну или через реестр
Код:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders »

Да, это подходит. Осталось присвоить новой переменой значение ключа Personal.Спасибо.

wiznv
06-06-2013, 09:47
всем привет. хочу продолжить тему чтобы не начинать по новой...

Для чего это было нужно?
Вот. Нечто подобное я хотел сделать:

For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"^|Find /I "Personal"`) Do set Person=%%J
"C:\Program Files\7-Zip\7z.exe" a -t7z -ssw -mx1 -p12345 -scsWIN -mhe "\\10.10.10.10\User_backup$\User\Backup_mydoc.7z" -r %Person%
Нужно было считать переменную из реестра т.к. путь к папке Мои документы был переназначен в корень С: а название этих папок у всех разные (C:\Petrov, C:\Ivanov и т.п.) (все происходит пока в Windows XP) ну и потом использовать эту переменную для архивации\бэкапа.

Это работает но вложенные папки не архивируются.
Добавил %Person%\* (как если бы это была не переменная, а путь - C:\Petrov\*) но тогда переменная не работает и остается только \* а это вобще все файлы на компьютере, т.е. не то что нужно.

Может есть у кого умные мысли.. ? (если нет то не пишите или спросите что еще нужно написать чтобы дать ответ)

Iska
06-06-2013, 10:06
Может есть у кого умные мысли.. ? »
Возможно и появятся, если Вы изложите Ваши мысли по-русски.

wiznv
06-06-2013, 10:14
Возможно и появятся, если Вы изложите Ваши мысли по-русски. »
Всем написано на русском, хватит чтобы понять о чем речь. Что именно Вам не понятно?

apozlevich
06-06-2013, 12:09
wiznv, дело в ключах 7z, курите мануал. Как-то возился с той же проблемой, в итоге у меня даже ключа -r нет:
7z a -t7z -m0=BCJ2 -m1=LZMA2 "..\Programs\Files\%~1.7z" "%~1\*"




© OSzone.net 2001-2012