Я поставил ответ в конце моего вопроса. так как моя учетная запись была ограничена, я не мог поставить ответ на свой вопрос !. (Я получил эту ошибку «Мы больше не принимаем ответы из этого аккаунта».)


Вопрос

Я следовал инструкциям этого руководства, чтобы добавить каскадные меню для щелчка правой кнопкой мыши на фоне папок и рабочего стола. (в Windows 10)

Раздел 1: Добавление каскадных меню для открытия программы.

Итак, я написал этот рег файл.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\New2]
"MUIVerb"="Apps"
"SubCommands"="createblankfile"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\createblankfile]
@="createblankfile"
"icon"="notepad.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\createblankfile\command]
@="C:\\Windows\\System32\\notepad.exe"

После установки вышеуказанного кода рег, элемент был добавлен в контекстное меню (см. Рисунок). и если я нажимаю на это, он открывает программу notepad.exe.

Раздел 2: изменить команду, чтобы сделать больше

Я пытаюсь изменить команду на что-то другое (как здесь). но после использования той же команды, она не работает.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\New2]
"MUIVerb"="Apps"
"SubCommands"="createblankfile"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\createblankfile]
@="createblankfile"
"icon"="notepad.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\createblankfile\command]
@="\"CMD\" /D /E:ON /c for /F \"tokens=1-9 delims=.,\\:/\" %%A IN (\"%%date%%.%%time%%\") DO for /F \"tokens=*\" %%a IN (\"%1\") do md \"%%~dpa\\%%A.%%B.%%C %%D;%%E;%%F\""
"nullfile"=hex:

Раздел 3: Мне нужно добавить некоторые элементы в контекстное меню, которые создают пустые файлы в текущем каталоге.

как я могу использовать эту команду ванны в строковом значении клавиши команды добавленной клавиши контекстного меню?(см. этот рисунок)

copy nul ".\new file.m"

решение

Я нашел решение сам:

Раздел 1: чтобы использовать командный файл в строковом значении, мы должны использовать «cmd /c» перед командой.

Пример:

Пакетная команда для создания и пустого файла с именем «new m file.m» в произвольном каталоге, таком как «D:\test\», имеет вид:

copy nul "d:\test\new m file.m"

чтобы использовать эту команду как строковое значение, мы должны изменить это на это:

cmd.exe /C copy nul "d:\test\new m file.m"

чтобы записать это в строковое значение реестра из reg-файла, мы должны использовать дополнительную обратную косую черту перед некоторыми специальными символами (например, \ или "символами"). Итак, мы должны изменить это на:

"MyStringValue"="cmd.exe /C copy nul \"d:\\tesst\\new m file.m\""

или же

"MyStringValue"="cmd.exe /C copy \"nul\" \"d:\\tesst\\new m file.m\""

раздел 2: чтобы создать пустое имя файла в текущем каталоге, я использую это.

cmd.exe /C copy nul "%new m file.m"

Раздел 3: Итак, полный код для добавления каскадного меню для создания пустого файла (здесь это пустой .txt файл), будет

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\New2]
"MUIVerb"="Apps"
"SubCommands"="createblankfile"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\createblankfile]
@="createblankfile"
"icon"="notepad.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\createblankfile\command]
@="cmd.exe /C copy \"nul\" \"%new text_file.txt\""

0