PDA

Показать полную графическую версию : Изменение пути в REG файле


gen0m.rsw
23-01-2014, 01:54
Всем участникам форума респект!

Собственно проблема
Есть папка RSWP, которая находиться всегда в корне диска X:\RSWP
В папке RSWP находиться файл shell.reg, с настройками, примерно такого содержания
[HKEY_CURRENT_USER\SOFTWARE\arniWORX\awxShellFish\*\arid]
"Command"="D:\\RSWP\\PACKER\\arid\\aridg.exe \"%1\""
"Icon"="D:\\RSWP\\PACKER\\arid\\aridg.exe,0"
"UseShortPath"=dword:00000000

[HKEY_CURRENT_USER\SOFTWARE\arniWORX\awxShellFish\*\HxD]
"Command"="D:\\RSWP\\FILE_FOLDERS\\HxD\\HxD.exe \"%1\""
"Icon"="D:\\RSWP\\FILE_FOLDERS\\HxD\\HxD.exe,0"
"UseShortPath"=dword:00000000
И.Т.Д.
Нужен X:\RSWP\shell.vbs, который определил букву диска X , с которого он запускается
и изменил ВСЕ пути в shell.reg файле, с D:\\ на X:\\

Спасибо за внимание!!!!

Iska
23-01-2014, 07:48
Нужен X:\RSWP\shell.vbs, который определил букву диска X , с которого он запускается »
Полагаю, что речь идёт всё-таки про диск, где находится скрипт, а не рабочий каталог, «с которого он запускается».

и изменил ВСЕ пути в shell.reg файле, с D:\\ на X:\\ »
Только в формате REG_SZ. Файл реестра ожидается в юникоде. Скрипт заменит все вхождения «D:\\RSWP» на путь, где находится скрипт. Пробуйте:
Option Explicit

Const ForReading = 1
Const TristateTrue = -1


Dim strFileName
Dim strPath

Dim strFullFileName
Dim strContent


strFileName = "shell.reg"

With WScript.CreateObject("Scripting.FileSystemObject")
strPath = .GetParentFolderName(WScript.ScriptFullName)
strFullFileName = .BuildPath(strPath, strFileName)

If .FileExists(strFullFileName) Then
With .OpenTextFile(strFullFileName, ForReading, False, TristateTrue)
strContent = .ReadAll()
.Close
End With

With .CreateTextFile(strFullFileName, True, TristateTrue)
.Write Replace(strContent, "D:\\RSWP", Replace(strPath, "\", "\\"))
.Close
End With
Else
WScript.Echo "Can't find file [" & strFullFileName & "]."
End If
End With

WScript.Quit 0

gen0m.rsw
25-01-2014, 02:30
Полагаю, что речь идёт всё-таки про диск, где находится скрипт, а не рабочий каталог, «с которого он запускается». »

Да Isra, shell.vbs должОн знаходиться в корне папки и диске откуда запущен!!!
Потому что папка RSWP постоянно перемещается с диска на диск!!!
Файл shell.reg, енто файл настоек программы awxShellFish http://www.arniworld.de/
Сохраняет REG файл в ANSI(начало reg файла REGEDIT4)!!!!

Iska
25-01-2014, 02:54
Сохраняет REG файл в ANSI(начало reg файла REGEDIT4)!!!! »
Пробуйте (не проверялось):
Option Explicit

Dim strFileName
Dim strPath

Dim strFullFileName
Dim strContent


strFileName = "shell.reg"

With WScript.CreateObject("Scripting.FileSystemObject")
strPath = .GetParentFolderName(WScript.ScriptFullName)
strFullFileName = .BuildPath(strPath, strFileName)

If .FileExists(strFullFileName) Then
With .OpenTextFile(strFullFileName)
strContent = .ReadAll()
.Close
End With

With .CreateTextFile(strFullFileName, True)
.Write Replace(strContent, "D:\\RSWP", Replace(strPath, "\", "\\"))
.Close
End With
Else
WScript.Echo "Can't find file [" & strFullFileName & "]."
End If
End With

WScript.Quit 0

откуда запущен!!! »
Ещё раз: «откуда запущен» — это рабочий каталог приложения, а не его местоположение.

gen0m.rsw
25-01-2014, 03:25
Iska
Вроде все нормально, тему можно считать закрытой!!!
Респект!!!!

gen0m.rsw
14-10-2014, 13:33
Пробуйте (не проверялось) »
Я так понимаю в файле shell.reg заменяется именно D:\\RSWP на X:\\RSWP , где X буква диска с которого запущен скрипт
Так если в shell.reg будет другой путь замена не произойдет!!! :(

Iska
14-10-2014, 15:33
Я так понимаю в файле shell.reg заменяется именно D:\\RSWP на X:\\RSWP »
Нет. Неправильно понимаете.

«в файле shell.reg», лежащем в текущем для скрипта каталоге, «заменяется именно D:\\RSWP» на путь, в котором находится файл скрипта. Будет полный путь к скрипту «X:\RSWP\Скрипт.vbs» — да, заменит на «X:\\RSWP». Будет полный путь к скрипту «X:\Вася\Петя\Коля\Маша\Скрипт.vbs» — заменит на «X:\\Вася\\Петя\\Коля\\Маша».

Так если в shell.reg будет другой путь замена не произойдет!!! »
Если в «shell.reg» будет другой путь, так и укажите его в:
.Write Replace(strContent, "D:\\RSWP", Replace(strPath, "\", "\\"))
Знаете какой-нибудь другой способ «найти то, не знаю, что» — предлагайте.

gen0m.rsw
15-10-2014, 11:53
Знаете какой-нибудь другой способ «найти то, не знаю, что» — предлагайте. »
А нельзя путь "X:\\RSWP" , где Х любая буква диска заменить на что то вроде как в CMD скриптах "..\..\RSWP" !!!

Знаете какой-нибудь другой способ «найти то, не знаю, что» — предлагайте. »

Или часть строк

"Command"="D:\\RSWP
"Icon"="D:\\RSWP
Где D любая буква диска, заменить на

"Command"="X:\\RSWP
"Icon"="X:\\RSWP
Где Х текущая буква!!! :sorry:




© OSzone.net 2001-2012