Я заменил мои комментарии этим ответом.
Во-первых, с вашим предоставленным кодом вам нужно изменить set si=%%sig:~0,4%%
на
set "si=%sig:~0,-4%"
Однако еслиВы были только после имени файла без расширения, вам не нужно set
другую переменную, а затем разверните ее, чтобы удалить расширение.Вы можете просто удалить:
set "si=%sig:~0,-4%"
и изменить for /F "tokens=*" %%g in ('dir /b %appdata%\Microsoft\Signatures\*.txt') do set sig=%%g
следующим образом:
For %%A In ("%appdata%\Microsoft\Signatures\*.txt")Do Set "sig=%%~nA"
и использовать %sig%
вместо %si%
в вашем reg add
строк:
Reg Add "HKCU\Software\Microsoft\Office\16.0\Common\MailSettings" /V NewSignature /T REG_EXPAND_SZ /D "%sig%" /F
Reg Add "HKCU\Software\Microsoft\Office\16.0\Common\MailSettings" /V ReplySignature /T REG_EXPAND_SZ /D "%sig%" /F
Кроме того, вы, кажется, используете тип данных REG_EXPAND_SZ
, когда это не нужно, , поскольку вы не используете расширяемую строку, простострока .Поэтому вы можете использовать этот тип синтаксиса:
Reg Add HKCU\Software\Microsoft\Office\16.0\Common\MailSettings /V NewSignature /D "%sig%" /F
Reg Add HKCU\Software\Microsoft\Office\16.0\Common\MailSettings /V ReplySignature /D "%sig%" /F
Собрав все это вместе в сценарии, он может выглядеть так:
@Set "Fldr=%AppData%\Microsoft\Signatures"
@Set "RKey=HKCU\Software\Microsoft\Office\16.0\Common\MailSettings"
@Set "Vals="NewSignature","ReplySignature""
@For %%A In ("%Fldr%\*.txt")Do @For %%B In (%Vals%)Do @Reg Add "%RKey%" /V %%B /D "%%~nA" /F>Nul
Вы, очевидно, все еще можете вставить /T REG_EXPAND_SZ
вReg Add
, если считаете это необходимым.
Обратите внимание, что весь этот ответ предполагает, что в каталоге Signatures
имеется только один файл .txt
.Если их может быть больше одного, попытайтесь объяснить, как вы хотите выбрать соответствующий файл .txt
.