Войти

Показать полную графическую версию : Батник не срабатывает с одним словом в значение переменной


termitt
22-01-2015, 11:03
привет всем. почему не срабатывает батник как надо? если заместо system, пишу два слова срабытвает батник. например пишу system windows показывает est' system. а так показывает nety system. хотя он там всегда есть.
echo OFF

:check_system

set "reglang=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion"

for /f "skip=2 tokens=3*" %%i in ('reg query "%reglang%" /v SoftwareType') do set "SoftwareType=%%i %%j"

if "%SoftwareType%" == "System" (goto verification_system)

goto end_verification_system

:verification_system
echo est' system
pause

:end_verification_system
echo nety system
pause

Iska
22-01-2015, 12:50
termitt, непонятно, что Вы хотите получить, используя:
for /f "skip=2 tokens=3*" %%i in ('reg query "%reglang%" /v SoftwareType') do set "SoftwareType=%%i %%j"
»
У меня, например, по Вашему коду выходит тупо лишний пробел в присвоении, поскольку «%%J» пустое. Поэтому и Ваше сравнение:
if "%SoftwareType%" == "System" (goto verification_system) »
будет ложным.

Опишите, что Вы хотите получить, и зачем Вы делаете именно так.

termitt
22-01-2015, 14:11
Iska, с помощью этого кода, я хочу получить информацию о переменной SoftwareType и узнать её значение System по принципу true or False. если правда то она существует то говорит est' system, а если нет то nety system.

Iska
23-01-2015, 06:10
termitt, второй вопрос остался без ответа:
и зачем Вы делаете именно так. »

termitt
23-01-2015, 08:09
Iska, чтобы узнать установилось По да или нет. Конечно я ставлю другие значения другое имя переменной и значение.. В принципе можно подправить этот? если да скажи как??

Iska
23-01-2015, 21:11
Например, так (Windows XP SP3):
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq tokens=1,3" %%i in (
`2^>nul reg.exe query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "SoftwareType" ^| find.exe /i "SoftwareType"`
) do set s%%i=%%j

if defined sSoftwareType (
if /i "%sSoftwareType%" equ "System" (
echo [SoftwareType] value is [System].
) else (
echo [SoftwareType] value is not [System].
)
) else (
echo Not found [SoftwareType] parameter in [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion] subkey.
)

endlocal
exit /b 0




© OSzone.net 2001-2012