Что нового

[Реестр] Скрипт не учитывает пробелы в пути

prokazzza

Новичок
Сообщения
160
Репутация
2
Привет всем!

Есть небольшой скрипт, позволяющий заносить значения в реестр

Код:
$sPath = @ScriptDir&'\' ; Папка где находятся файлы
$search = FileFindFirstFile($sPath & "*.reg")  

While 1
    $file = FileFindNextFile($search) 
    If @error Then ExitLoop
    Run(@ComSpec & " /c " & "regedit -s " & $sPath  & $file , "", @SW_HIDE)
WEnd


Но к сожалению, есть небольшой минус, он не срабатывает, если в пути есть пробелы. Сразу скажу, указывать полный путь, не вариант и отпадает сразу. Может, кто что подскажет. Заранее благодарю!
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
Run(@ComSpec & ' /c regedit -s "' & $sPath  & $file&'"' , '', @SW_HIDE)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
prokazzza [?]
указывать полный путь, не вариант и отпадает сразу
Что значит не вариант, тут уже указан полный путь.

Код:
$sPath = @ScriptDir & '\' ; Папка где находятся файлы
$hSearch = FileFindFirstFile($sPath & "*.reg")

While 1
	$sFileName = FileFindNextFile($hSearch)
	If @error Then ExitLoop
	
	Run('regedit -s "' & $sPath & $sFileName & '"')
WEnd

FileClose($hSearch)
 
Автор
P

prokazzza

Новичок
Сообщения
160
Репутация
2
sngr Спасибо, все работает.


CreatoR не указывать вручную путь.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
prokazzza [?]
Оно то работает, но зачем использовать посредника, когда regedit можно запускать напрямую?
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
prokazzza
@ComSpec там вообще не нужен, это равносильно через cmd.exe запускать

Сравни:
Код:
RunWait(@ComSpec & " /c " & "regedit -s " & $sPath  & $file , "", @SW_HIDE)
RunWait('cmd.exe' & " /c " & "regedit -s " & $sPath  & $file , "", @SW_HIDE)
RunWait("regedit -s " & $sPath  & $file , "", @SW_HIDE)

Первая строка тоже что вторая, а надо как в третьей запускать, без посредника cmd.exe
Надо через RunWait запускать, потому что используя Run в цикле это может быть равносильно одновременному запуску пару десятков regedit.
 
Верх