Разделяйте токены в пакетных разделителях запятыми, но в пробелах есть строка - PullRequest
0 голосов
/ 23 ноября 2018

извините, но я не могу решить эту проблему.У меня в WinReg есть эта строка:

shell REG_SZ cscript C: \ shell.vbs C: \ start.bat, cscript C: \ shell.vbs C: \ start2.bat, cscript C:\ shell.vbs C: \ start3.bat

Я собираюсь создать другой "start.bat" (например, start.bat), но я должен убедиться, что существует в оболочке, чтоЯ сделал это:

set llave="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
set campo=Shell
set existe=0

for /f "tokens=3" %%a in ('reg query %llave%  /V %campo%  ^|findstr /ri "REG_SZ"') do set datos=%%a

:SigDato
if "%datos%" == "" goto CreaShell

for /F "tokens=1* delims=," %%a in ("%datos%") do (
    if "%%a"=="C:\path\start4.bat" (
        set existe=1
    ) else (
        if "%existe%"=="1" (
            set existe=1
        ) else (
            set existe=0
        )
    )
    set "datos=%%b"
)

goto SigDato

:CreaShell
if "%existe%"=="0" (
    echo entro
    reg add %llave% /v %campo% /t REG_SZ /d %shellReg%,C:\path\start4.bat /f
)

В тесте все работало нормально, потому что у меня нет пробелов

"cscript C: \ script.vbs C: \ start.bat "

, но когда я увидел, что он использует пробелы, до сих пор я не знаю, как взять всю строку с пробелами, разделенными запятой.Кто-нибудь может мне помочь?

Я очень ценю это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...