-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 ответ1

0

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

  • используйте переменную для ключа, чтобы избежать подверженной ошибкам избыточности
  • использовать условное выполнение в случае успеха && или fail ||
  • перенаправить нежелательный вывод >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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .