对不起,但我无法解决此问题。我的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是一个示例),但是我必须确定shell中是否存在,我所做的是这样的:
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”
但是当我看到它使用空格时,直到现在我还不知道如何将所有带空格的字符串用逗号分隔。有人可以帮我吗?
我非常感谢