Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Перемещение папки "Мои документы"

Ответить
Настройки темы
VBS/WSH/JS - Перемещение папки "Мои документы"

Аватара для BigBoo

Старожил


Автор проектов


Сообщения: 474
Благодарности: 120

Профиль | Отправить PM | Цитировать


Изменения
Автор: BigBoo
Дата: 03-02-2011
Применяю скрипт:
Код: Выделить весь код
Set Create=CreateObject("Scripting.FileSystemObject")  
Set WSHShell=WScript.CreateObject("WScript.Shell")    

if Not Create.FolderExists("D:\Мои документы") Then  	
Create.CreateFolder "D:\Мои документы"  
end if    

On Error Resume Next    

strPersonal = WshShell.SpecialFolders("MyDocuments")  
Create.CopyFolder strPersonal, "D:\Мои документы"  
if strPersonal <> "D:\Мои документы" Then  	
Create.DeleteFolder strPersonal, True  
end if    

WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Personal","D:\Мои документы","REG_EXPAND_SZ"  
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\My Pictures","D:\Мои документы\Мои рисунки","REG_EXPAND_SZ"  
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\My Music","D:\Мои документы\Моя музыка","REG_EXPAND_SZ"  
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\My Video","D:\Мои документы\Мои видеозаписи","REG_EXPAND_SZ"
Вопросы:
1. Почему исчезают иконки с папок "Мои рисунки", "Моя музыка", "Мои видеозаписи" (значок становится как у обычной папки)?
2. Ткнувшись по значку "Мои документы" на рабочем столе получаю ошибку (в свойствах старый адрес папки), и всё работает только после перезагрузки.
На CMD таких проблем НЕ ВОЗНИКАЕТ!

Отправлено: 12:39, 03-02-2011

 

Старожил


Сообщения: 426
Благодарности: 108

Профиль | Отправить PM | Цитировать


Не знаком с vbs и аналогами, но
1. Вы правите реестр, его изменения надо подгрузить в оперативку. Попробуйте gpupdate, может даже с ключиком "/force" - но команда запросто может потребовать ту самую перезагрузку...
2. Кроме создания новых папок нужно отслеживать и как минимум за файликом "Desktop.ini", а если используется режим с веб-расширениями, то там еще появляется html-ка с расширением кажется ".ht" (уже точно не помню, баловался с этим еще под 98й).

-------
Как сказало Дерево Дровосеку: "я - пень".


Отправлено: 13:25, 04-02-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для BigBoo

Старожил


Автор проектов


Сообщения: 474
Благодарности: 120

Профиль | Отправить PM | Цитировать


С 1-ым вопросом разобрался, но возник другой. Оказывается иконки исчезают, так как при копировании снимаются атрибуты с папок. А это не есть хорошо. Можно конечно заново установить их скриптом, но как быть, исли в "Моих документах" есть ещё папки со значками кроме "Мои рисунки", "Моя музыка", "Мои видеозаписи" . Получается, будет нужен скрипт, сканирующий имена папкок, их аттрибуты и высставляющий эти аттрибуты у папок созданных. Кстати интересно, что у скопированных файлов в папках аттрибуты сохраняются, в том числе у "Desktop.ini".

Можно ли с этими злосчастными аттрибутами разобраться как-то попроще, чем писать ещё один скрипт?

По поводу 2-го вопроса:
Цитата NiOl:
Попробуйте gpupdate »
не помогает.

Отправлено: 18:17, 04-02-2011 | #3


Пользователь


Сообщения: 78
Благодарности: 23

Профиль | Отправить PM | Цитировать


Прочитай в справке о VBS про Attributes

Отправлено: 02:32, 06-02-2011 | #4


Аватара для BigBoo

Старожил


Автор проектов


Сообщения: 474
Благодарности: 120

Профиль | Отправить PM | Цитировать


Вот набросал такой скрипт по поводу атрибутов:
Код: Выделить весь код
Set Create=CreateObject("Scripting.FileSystemObject")  
Set WSHShell=WScript.CreateObject("WScript.Shell")    

ToFolder = "D:\Мои документы"  
strPersonal = WshShell.SpecialFolders("MyDocuments")  
Set f=Create.GetFolder(strPersonal)   
Create.CreateFolder(ToFolder)    

For Each a in f.Subfolders  
a.Copy(ToFolder & "\" & a.name)  
Create.GetFolder(ToFolder & "\" & a.name).Attributes=Create.GetFolder(a).Attributes  
Next    

For Each a in f.Files  
a.Copy(ToFolder & "\" & a.name)
Next
Как сделать так чтобы скрипт менял атрибуты не только у вложенных папок, так скажем первого уровня, но у ВСЕХ папок не зависимо от глубины вложения?

Отправлено: 17:23, 06-02-2011 | #5


Аватара для BigBoo

Старожил


Автор проектов


Сообщения: 474
Благодарности: 120

Профиль | Отправить PM | Цитировать


Вроде разобрался. Готовый скрипт
читать дальше »
Set Create=CreateObject("Scripting.FileSystemObject")
Set objShellApp = CreateObject("Shell.Application")

Letter="D:\"
ToFolder = Letter & "Мои документы"
RootFold = WshShell.SpecialFolders("MyDocuments")
i=0
Dim FoldName()
Dim FoldAttrib()
Set objFolder = objShellApp.NameSpace(RootFold)
Set objItems = objFolder.Items()
Count = objItems.Count
Redim Preserve FoldName(Count)
Redim Preserve FoldAttrib(Count)

if RootFold <> ToFolder Then

if not Create.FolderExists(ToFolder) then
Create.CreateFolder(ToFolder)
end if

Set F = Create.GetFolder(RootFold)
F.Copy ToFolder

'Читаем атрибуты подкаталогов в папке-источнике
call Get_Fold (RootFold)
sub Get_Fold (strFoldName)
Set Folder = Create.GetFolder(strFoldName)

For Each SubFolder In Folder.SubFolders
s_path=SubFolder.path
FoldName(i)=cstr(SubFolder.Name)
FoldAttrib(i)=cstr(SubFolder.Attributes)
i=i+1
call Get_Fold (s_path)
Next
end sub

'Высставляем аттрибуты подкаталогов в папке назначения как в папке-источнике
call Get_ToFold (ToFolder)
sub Get_ToFold (strFoldName)
Set Folder = Create.GetFolder(strFoldName)

For Each SubFolder In Folder.SubFolders
s_path=SubFolder.path
For i=0 To Count
if SubFolder.Name=FoldName(i) then
SubFolder.Attributes=FoldAttrib(i)
end if
next
call Get_ToFold (s_path)
Next
end sub

On Error Resume Next
Create.DeleteFolder RootFold, True

WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Personal",ToFolder,"REG_EXPAND_SZ"
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\My Pictures",ToFolder & "\Мои рисунки","REG_EXPAND_SZ"
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\My Music",ToFolder & "\Моя музыка","REG_EXPAND_SZ"
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\My Video",ToFolder & "\Мои видеозаписи","REG_EXPAND_SZ"

'Запрос о перезагрузке
strComputer = "."
strNamespace = "Root\CIMV2"
strClass = "Win32_OperatingSystem"
Set objClass = GetObject("WinMgmts:{(Shutdown,RemoteShutdown)}!\\" & strComputer & "\" & strNamespace & ":" & strClass)
Set colInstances = objClass.Instances_
For Each objInstance In colInstances
iAnswer = MsgBox("Перезагрузить компьютер сейчас?", vbQuestion + vbOKCancel, "Требуется перезагрузка!")
If iAnswer = vbOK Then
objInstance.Reboot()
End if
Next
end if

Теперь остался вопрос №2.

Отправлено: 01:23, 07-02-2011 | #6


Аватара для BigBoo

Старожил


Автор проектов


Сообщения: 474
Благодарности: 120

Профиль | Отправить PM | Цитировать


По поводу 2-го вопроса - помогает перезапуск Explorer. Но очень раздражает, что при этом происходит сброс положения иконок рабочего стола. Интересно, существует ли способ его перезапуска без сброса положений значков?

Отправлено: 02:12, 07-02-2011 | #7


Новый участник


Сообщения: 15
Благодарности: 5

Профиль | Отправить PM | Цитировать


2BigBoo, по поводу второго вопроса о переносе Personal.

Править надо в двух местах: ...\User Shell Folders (REG_EXPAND_SZ) и ...\Shell Folders (REG_SZ)...

Я это делаю на T12 (T13) и перезагрузка, соответственно, вовсе не нужна...
А если делать после логона, то достаточно перелогиниться или "правый клик" на рабочем столе и "обновить".

Последний раз редактировалось nsky, 10-02-2011 в 19:05.


Отправлено: 18:55, 10-02-2011 | #8


Аватара для BigBoo

Старожил


Автор проектов


Сообщения: 474
Благодарности: 120

Профиль | Отправить PM | Цитировать


Цитата nsky:
Править надо в двух местах: »
Во 2-ом месте значение появляется автоматически.
Цитата nsky:
на T12 (T13) и перезагрузка, соответственно, вовсе не нужна »
Да, конечно. Имеется ввиду применение скрипта на "живой системе".

Цитата nsky:
достаточно перелогиниться или "правый клик" на рабочем столе и "обновить" »
Оказывается недостаточно, только перезапуск Explorer или перезагрузка. Отчего и вопрос.

Отправлено: 20:49, 10-02-2011 | #9


Новый участник


Сообщения: 15
Благодарности: 5

Профиль | Отправить PM | Цитировать


Очевидно Explorer при запуске:
- обновляет ветку User Folders на основе Shell User Folders. Кстати, не всю.
- инициализирует рабочий стол.

Если выполнить за него часть работы, т.е. самому обновить обе ветки, то можно пробовать
обновить среду. Увы, пробовал в свое время
nircmd sysrefresh

Не срабатыватет.

Остается "автоматический перезапуск Explorer в случае ошибки"
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoRestartShell
и
kill explorer

Либо просто
logoff

Последний раз редактировалось nsky, 11-02-2011 в 11:17.


Отправлено: 10:36, 11-02-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Перемещение папки "Мои документы"

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Переименование "Мой компьютер", "Мои документы", "Мои рисунки" AV4 Автоматическая установка Windows 2000/XP/2003 3 11-01-2010 11:32
Интерфейс - [решено] Перемещение папки "Общие документы" konstantinych Microsoft Windows 2000/XP 2 08-08-2009 09:19
Переадресация папки "Мои документы" и "Рабочий стол". Проблема! DeniTornado Microsoft Windows NT/2000/2003 2 26-02-2009 10:05
Разное - Нет папки "мои документы" в папке "мой компьютер". avenir00 Microsoft Windows 2000/XP 0 10-12-2008 13:58
Разное - Перемещение папки "Мои документы" в Vista Home Premium Kirill NN Microsoft Windows Vista 1 16-01-2008 10:34




 
Переход