Войти

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


ivan456
08-01-2023, 05:03
Всем привет.
Подскажите как правильно это закоментировать. Пол дня бьюсь об стену никак не могу понять, тему изучал где какие символы ставить в разных случаях, но нифига не понял.
В моем примере почему то это не хочет работать.

Этот bat cкрипт ищет REG_MULTI_SZ, удаляет ненужноев нем и снова добавляет.
Вот только при добавлении %%windir%%, пишется как просто Windows, а должно быть %C:\Windows%

@Echo On
SetLocal EnableExtensions DisableDelayedExpansion

Set "_k=HKLM\SOFTWARE\testing"
Set "_v=test123"
Set "_s=%%%windir%%%\testing\2.txt"

Set "_d="
For /F "Tokens=2*" %%A In ('Reg Query "%_k%" /V "%_v%"'
) Do If "%%A"=="REG_MULTI_SZ" Set "_d=%%B"
If "%_d%"=="" Exit /B
Set "_d=%_d:\0\0=%"
Set "_m="
For %%A In ("%_d:\0=","%"
) Do Echo %%A|Find /I "%_s%">Nul||Call Set "_m=%%_m%%%%A\0"
If "%_m%"=="" Exit /B
Reg Add "%_k%" /V "%_v%" /T "REG_MULTI_SZ" /D %_m:~,-2% /F>Nul

PS: Просто reg add мне не подходит, так как добавлять надо много разного в один параметр и сидеть сравнивать чего там есть, а чего нет слишком долго и муторно.

А ещё как в конце убрать /0 в этом скрипте?
Должно быть как здесь:
Reg.exe add "HKLM\SOFTWARE\testing" /v "test" /t REG_MULTI_SZ /d "%%windir%%\testing\1.txt\0%%windir%%\testing\2.txt\0%%windir%%\testing\3.txt" /f

ivan456
08-01-2023, 10:01
Возможно не правильно написал в вопросе), экранирование наверно.

Serguei Kouzmine
09-01-2023, 03:05
вам нужно было корректно формулировать проблему, если вы хотите ее решения!
чем мучиться (про себя употребил другое слово) с приведенным батникам
советую переписать его на повершелл

ivan456
09-01-2023, 07:00
вам нужно было корректно формулировать проблему, если вы хотите ее решения!
чем мучиться (про себя употребил другое слово) с приведенным батникам
советую переписать его на повершелл »
не спал сутки, вот и перемешалось все в голове) комментирование, экранирование, почти похоже)
Я бы хотел понять почему у меня в конце никак не добавляются %C:\Windows%
Скрипт то почти рабочий, по крайней мере он работает с REG_MULTI_SZ и REG_SZ, которые через запятую идут.

Serguei Kouzmine
12-01-2023, 05:03
извините за прямоту
для этой операции (другими словами) вреден цмд
это примерно как добывать огонь трением
это и многим и более подкованным не под силу

вот как можно (пере) записать значение тербуемого типа в реестр



$a = get-itemproperty -path 'HKLM:\SYSTEM\CurrentControlSet\Services\wscsvc' -name DependOnService | select-object -expandproperty DependOnService
$a += 'noname'
# convert from [Object[]] to [String[]]
[String[]]$b = [String[]]($a)
$b.getType()

IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String[] System.Array


set-itemproperty -path 'HKLM:\SYSTEM\CurrentControlSet\Services\wscsvc' -name test -value $b

Serguei Kouzmine
12-01-2023, 05:06
скриншот167838

& Reg.exe Query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wscsvc" /V "test"

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wscsvc
test REG_MULTI_SZ RpcSs\0WinMgmt\0noname




© OSzone.net 2001-2012