Я запускаю командный файл, который проверяет количество файлов реестра с помощью команды «reg query». Я настроил его для отправки сообщения об ошибке в журнал ошибок (ErrorLog.txt), а также попросил пользователя проверить журнал ошибок в основном текстовом файле результатов (REGValues.txt). Проблема в том, что я получаю эти, казалось бы, случайные пустые строки в файле REGValues.txt. Как удержать его от вставки этих пустых строк?Batch Reg Query добавляет неожиданные пустые строки для вывода файла
Вот фрагмент моего кода, только что, где он обычно добавляется к пустым строкам.
mkdir c:\temp2\
SET dirname=c:\temp2\
SET filename2=REGValues.txt
SET errlog=ErrorLog.txt
:_registryValues
@echo Scanning Registry Values
@echo HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\LegalNoticeText 1>> %dirname%/%errlog%
reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\" /v LegalNoticeText /z 1>> %dirname%\%filename2% 2>> %dirname%\%errlog%
if errorLevel 1 echo Check Error Log 1>> %dirname%\%filename2%
@echo HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\LegalNoticeCaption 1>> %dirname%/%errlog%
reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\" /v LegalNoticeCaption /z>> %dirname%\%filename2% 2>> %dirname%\%errlog%
if errorLevel 1 echo Check Error Log 1>> %dirname%\%filename2%
@echo HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultPassword 1>> %dirname%/%errlog%
reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\" /v DefaultPassword /z >> %dirname%\%filename2% 2>> %dirname%\%errlog%
if errorLevel 1 echo Check Error Log 1>> %dirname%\%filename2%
@echo HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AdditionalBaseNamedObjectsProtectionMode 1>> %dirname%/%errlog%
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\" /v AdditionalBaseNamedObjectsProtectionMode /z >> %dirname%\%filename2% 2>> %dirname%\%errlog%
if errorLevel 0 echo Check Error Log 1>> %dirname%\%filename2%
@echo HKLM\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\EnablePortLocking 1>> %dirname%/%errlog%
reg query HKLM\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\ /v EnablePortLocking /z >> %dirname%\%filename2% 2>> %dirname%\%errlog%
if errorLevel 1 echo Check Error Log 1>> %dirname%\%filename2%
@echo HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\EnhancedSecurityLevel 1>> %dirname%/%errlog%
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\" /v EnhancedSecurityLevel /z >> %dirname%\%filename2% 2>> %dirname%\%errlog%
if errorLevel 1 echo Check Error Log 1>> %dirname%\%filename2%
@echo HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\LDAPServerIntegrity 1>> %dirname%/%errlog%
reg query HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\ /v LDAPServerIntegrity /z >> %dirname%\%filename2% 2>> %dirname%\%errlog%
if errorLevel 1 echo Check Error Log 1>> %dirname%\%filename2%
Вот что текстовый файл выглядит, что я посылаю результаты тоже:
Check Error Log
Check Error Log
Check Error Log
Check Error Log
Check Error Log
Check Error Log
Он печатает мой журнал ошибок просто отлично:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\LegalNoticeText
ERROR: The system was unable to find the specified registry key or value.
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\LegalNoticeCaption
ERROR: The system was unable to find the specified registry key or value.
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultPassword
ERROR: The system was unable to find the specified registry key or value.
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AdditionalBaseNamedObjectsProtectionMode
ERROR: The system was unable to find the specified registry key or value.
HKLM\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\EnablePortLocking
ERROR: The system was unable to find the specified registry key or value.
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\EnhancedSecurityLevel
ERROR: The system was unable to find the specified registry key or value.
Какую версию Windows вы используете? – Endoro
Я использую Windows 8, но это также происходит в Windows 7 ... Думаю, я понял это. Я думал, что вам нужны только двойные кавычки, если в значении реестра, которое я искал, было пробел, но значения, у которых нет двойных кавычек, я получаю пустые строки. – Chris
Двойное цитирование всего не было решением, но я сузил проблему до: это происходит с ключами, у которых нет двойной цитаты «вокруг». Я попытался добавить его, но тогда он просто говорит, что ключ не найден, даже когда он был ранее. – Chris