For /F "UseBackQ Tokens=1,2,3*" %%i In (`REG QUERY "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"^| Find /I "Hidden"`) Do (set hidFilePhold=%%i%& echo %%j% & set hidFilePhold=%%k%)
и так:
For /F "UseBackQ skip=2 Tokens=1,2,3" %%i In (`REG QUERY HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /f Hidden /t REG_DWORD /c /e`) Do set hd=%%i% &echo %%j% & set hidFilePhold=%%k%
!variable!
SetLocal EnableDelayedExpansion
call echo %%variable%%
Обратите внимание, что это ненадёжный способ. У меня может не быть ни одного параметра, быть только один, или имена параметров могут быть расположены в другом порядке. Реестр не выполняет сортировку имён.REG QUERY "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"^| Find /I "Hidden"
@echo off
SetLocal EnableExtensions
set Hidden=0x0
set SuperHidden=0x0
set ShowSuperHidden=0x0
For /f "tokens=2*" %%a in ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v Hidden') do set Hidden=%%b
For /f "tokens=2*" %%a in ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v SuperHidden') do set SuperHidden=%%b
For /f "tokens=2*" %%a in ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v ShowSuperHidden') do set ShowSuperHidden=%%b
set h=%Hidden%,%SuperHidden%,%ShowSuperHidden%
echo %h%
pause
В таком случае можно проще, даже без раскрытия переменной:Но вообще я искал единственное совпадение.
@echo off
SetLocal EnableExtensions
:: убеждаюсь, что переменная пуста
set "Hidden="
(
For /F "Tokens=2*" %%i In ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"^| Find /I "Hidden"') Do if "%%j"=="0x1" set Hidden=true
For /F "Tokens=2*" %%i In ('REG QUERY "HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"^| Find /I "Hidden"') Do if "%%j"=="0x1" set Hidden=true
if defined Hidden echo Есть по крайней мере одна настройка Hidden !!!
)
pause
Вернее сказать, удаление переменной окружения процесса.Т.е. set "Hidden=" - это объявление переменной с пустым значением, и/или здесь уже объявлен скрытый пробел?
В принципе всё рассказано в статье: https://safezone.cc/threads/cmd-setlocal-i-rasshirennaja-obrabotka-komand.22629/А можно двумя словами сформулировать "заповеди" передачи данных из цикла в др. команды?
Можно убрать/закомментировать @echo offКак можно продетектировать процесс?
В данном конкретном случае по привычке, и просто для наглядности.Какую роль играют двойные кавычки: Do if "%%j"=="0x1"
Почему вы так решили?Почему set Hidden=true срабатывает, а set Hidden=%%j - нет?
Поскольку я даю код как пример, то могу предположить, что его вставят в другой код, где нет гарантии, что такая переменная ранее не объявлялась, а это напрямую повлияет на логику приведённого кода (команду If defined), т.к. она как раз и сообщает результат о том, объявлена переменная или нет.Смутило то, что не объявленная ранее переменная очищается, и наличие кавычек: подумал, что там есть что-то, чего я не знаю...
Операнд - обязательный параметр в функции, выполняющей арифметическую операцию. В данном случае операция сравнения.что подорозумевается под пустым операндом, для каких целей от него защищают, и каким образом организуется защита от него?
Честно говоря, не изучал этот вопрос на практике. Но мне интересно проверить, т.к. в заначке лежит черновой вариант статьи на эту тему.Значит это-таки - очистка переменной. Или ликвидация?
set ZZZ=1
set ZZZ=
lpValue [in, optional]
The contents of the environment variable. The maximum size of a user-defined environment variable is 32,767 characters. For more information, see Environment Variables.
Windows Server 2003 and Windows XP: The total size of the environment block for a process may not exceed 32,767 characters.
If this parameter is NULL, the variable is deleted from the current process's environment.
Если это параметр какой-либо функции, то кавычки тоже важны и не помешают, например,Значит это - про операцию сравнения. С этого боку я на этот сюжет не заглядывал. Просто ОГРОМНОЕ СПАСИБО!
call some.bat "" "second"
Спасибо за лестный отзыв.К стати, русский язык у Вас, в общем, аккуратный, в отличие от многих московских журналистов, или стрингеров из Интернетовских СМИ. Не без ошибок (я не про "очепятки")... Но вполне.., в отличие от них. Если еще учесть, что здесь у нас с Вами - "междусобойчик". Даже приятно заметить.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?