DavidPostil прав в том, что вы должны заключить всю строку данных в двойные кавычки, а затем экранировать и двойные кавычки внутри строки, чтобы убедиться, что они знают, что они являются частью строки.
В этом случае вся строка данных, которую вы хотите добавить:
xb'BV5!!!!!!!!!MKKSkEXCELFiles>VijqBof(Y8'w!FId1gLQ /dde /p "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" /e "%1"
Таким образом, вы хотите заключить эту строку в двойные кавычки, чтобы командная строка распознала ее как одну строку (а не как несколько аргументов).
Хитрость заключается в том, чтобы выяснить, какие кавычки (и другие символы) внутри этих разделительных кавычек необходимо экранировать, а затем выяснить, как избежать их для этого контекста.
Потребовалось немного проб и ошибок, чтобы понять это, но в этом случае вам нужно беспокоиться только о внутренних двойных кавычках, и вы избежите их, поставив перед ними обратную косую черту (\
):
reg add "HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command" /v command /t REG_MULTI_SZ /d "xb'BV5!!!!!!!!!MKKSkEXCELFiles>VijqBof(Y8'w!FId1gLQ /dde /p \"C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE\" /e \"%1\""
Сказав все это, и основываясь на проблемах, которые, кажется, продолжаются, и я точно обрисовал его, я думаю, что Рэмхаунд, возможно, упомянул лучшее / простое решение в своем комментарии.
Просто зайдите на компьютер с настройками, которые вы хотите, а затем экспортируйте этот ключ в файл .reg
.
Затем используйте reg import
в вашем пакетном файле, чтобы импортировать этот файл .reg.
Если вам не нравится использовать / распространять два файла, и / или у вас нет центрального места, вы можете поместить его в сеть, тогда вы всегда можете заставить пакетный файл создать файл .reg на лету, повторив строки во временный текстовый файл, импортируйте его, а затем удалите временный файл, как только закончите.