Программа, которая включает и выключает настройки Windows в соответствии с условиями из cmd

-1

Я хотел создать .bat, который включает или выключает некоторые настройки Windows, чтобы я мог привязать его к сочетанию клавиш. Я создал .bat-файл, который пытается добавить ключ реестра NoDesktop, чтобы значки на рабочем столе могли быть скрыты, если он запускает проверку в reg и не может найти значение ключа, или удаляет ключ реестра, если он может найти ключ стоимость.

@echo off

REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" 
/v NoDesktop 

if %errorlevel% equ 0 ((
REG DELETE 
"HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v 
NoDesktop /f 
)& echo Registry key deleted, now the desktop icons should be displayed.
(
pause)
 )
else (REG add 
"HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v 
NoDesktop /t REG_DWORD /d 1 /f (
& echo Registry key added, now the desktop icons should be hidden.
))

pause

но когда я запускаю его, командная строка выскакивает и сразу закрывается. Затем я попытался удалить все скобки, но он показывает сообщение о том, что ключ реестра не найден, что хорошо, и должен вызвать команду else, но это не так, и он предлагает мне выйти.

что я сделал не так? Я также попытался удалить все команды эха, так как я боюсь, что если a, то b & c, иначе d & e не работает в cmd. но это все еще показывает, что ключ реестра не найден и предлагает мне выйти. Я также попытался изменить скобки и убедиться, что они все закрыты, но все равно не работает.

ОБНОВЛЕНИЕ: Спасибо, мне удалось исправить синтаксис и заставить летучую мышь работать хорошо после некоторого поиска в Google .... но у меня все еще есть несколько проблем: @echo off

REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" 
/v NoDesktop 2>nul

if %errorlevel% equ 0 (
REG DELETE 
"HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" 
/v NoDesktop /f & echo Registry key deleted, now the desktop icons should be 
displayed. & pause
) else (
REG add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" 
/v 
NoDesktop /t REG_DWORD /d 1 /f & echo Registry key added, now the desktop 
icons should be hidden. & pause
)
  1. 2> нуль абсолютно необходимо? Отсюда я узнал https://stackoverflow.com/questions/35458001/check-if-registry-key-value-exists-and-if-so-log-it, что он присоединяет 2> nul в конце запроса reg но для этого человека https://community.spiceworks.com/topic/203455-bat-file-if-reg-key-exists-than-goto он этого не делает. Почему его программа не сообщает об ошибке и не останавливается, как моя?

  2. Даже при том, что программа работает гладко и добавляет и удаляет раздел реестра, как и предполагалось ... все равно значки на рабочем столе не станут скрытыми или скрытыми. Добавление и удаление записи реестра Nodesktop - это единственный метод, который я нашел в сети, который включает и отключает значки на рабочем столе из cmd. И, следовательно, единственный способ, которым я знаю, что это может сделать файл .bat и сделать сочетание клавиш, чтобы я мог переключать настройки с помощью ввода с клавиатуры.

  3. Написание программ с помощью cmd не было самым приятным опытом. Существуют ли другие способы написания простых программ, которые можно запускать в Windows, но не справляясь со старым языком cmd или установкой некоторых других языков времени выполнения, таких как c ++ или java? и как вы делаете .exe с базовым графическим интерфейсом для простых функций, как этот?

Джек Потрошитель
источник
1
Попробуйте запустить командный файл непосредственно из командной строки, пока не получите его работу. Таким образом, вы можете увидеть результат без закрытия окна на вас.
Twisty Impersonator
1
Он немедленно закрывается, потому что в вашем синтаксисе есть ошибки. Способ написать оператор IF с помощью скобок очень точен. Я не думаю ((поддерживается вообще.
LPChip

Ответы:

0

я предлагаю тебе

  • используйте переменную для ключа, чтобы избежать подверженной ошибкам избыточности
  • использовать условное выполнение в случае успеха &&или неудачи||
  • перенаправить нежелательный вывод >NUL 2>&1
  • ограничить использование круглых скобок абсолютной необходимостью

Непроверенные:

:: Q:\Test\2018\10\17\SU_1367690.cmd
@echo off
Set "Key=HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"

REG QUERY "%Key%" /v NoDesktop >NUL 2>&1 && (
    REG DELETE "%Key%" /v NoDesktop /f >NUL 2>&1
    echo Registry key deleted, now the desktop icons should be displayed.
) || (
    REG Add "%Key%" /v NoDesktop /t REG_DWORD /d 1 /f  >NUL 2>&1
    echo Registry key added, now the desktop icons should be hidden.
)
pause
LotPings
источник
Спасибо. Кроме того, не могли бы вы рассказать мне в целом, когда вы изучаете язык программирования, как вы впервые получаете базовые знания? Я использовал этот сайт, чтобы попытаться научиться писать простые программы ss64.com/nt, но мне трудно это понять, так как у меня практически нет опыта программирования и знаний для компьютеров вообще. Стоит ли мне начинать с учебника или попробовать изучать более современные языки программирования с помощью этих 101 учебника онлайн? Или я пытаюсь читать из вики и учиться понемногу? Или вы знаете хорошее место, чтобы познакомиться с основами компьютеров и операционной системы?
Джек Потрошитель
Все языки программирования / сценариев имеют кривую обучения, и какой путь вам подходит , вы должны выяснить сами. Знание партии всегда будет полезно - но я бы использовал для этого более современный и многофункциональный PowerShell.
LotPings