2013-07-08 4 views
0

Я запускаю командный файл, который проверяет количество файлов реестра с помощью команды «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. 
+0

Какую версию Windows вы используете? – Endoro

+0

Я использую Windows 8, но это также происходит в Windows 7 ... Думаю, я понял это. Я думал, что вам нужны только двойные кавычки, если в значении реестра, которое я искал, было пробел, но значения, у которых нет двойных кавычек, я получаю пустые строки. – Chris

+0

Двойное цитирование всего не было решением, но я сузил проблему до: это происходит с ключами, у которых нет двойной цитаты «вокруг». Я попытался добавить его, но тогда он просто говорит, что ключ не найден, даже когда он был ранее. – Chris

ответ

0

Хотя я до сих пор дон Я не знаю почему, я нашел решение, приняв другой подход. Вместо того, чтобы пытаться выяснить, почему произвольные пустые строки, где в файле, я решил найти способ удалить строки после создания файла.

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

@echo Cleaning File 

For /F "tokens=* delims=" %%A in (%RegValues.txt%) Do Echo %%A >> %RegValues_Clean.txt% 

@echo Finished Cleaning File 
1

Пожалуйста, проверьте внимательно.

Первого дело: Имя ключ должен NOT прекратить \ - я использую W7 и получить разные результаты \ -Terminal против нет- \ терминальном

Второго вопроса: IF ERRORLEVEL 0 (HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager) является Всегда правда. IF ERRORLEVEL n верно, если errorlevel является п ИЛИ ПРЕВЫШАЕТ п

Третьего дела: 1>> - 1 избыточен (независимо от стиля - или, возможно, вам понравится печатать?)

Четвертый: @echo on на старте скрипт выключается echo. Далее @echos будут избыточными - echo будет достаточным.

Теперь - как ни парадоксально, вы обнаружите, что удаление терминала \ с помощью клавиш произведет MORE пустые строки. req query выводит отчет с разнесенными точками с кучами пробелов. Сообщаемая стоимость вводится с новой строкой и заканчивается другим - или так кажется ...

+0

Спасибо, что нашли время ответить. Я собираюсь придерживаться сценария, чтобы удалить пустые строки. Однако я применим некоторые из ваших предложений об избыточности.Я работаю с программой, которую начал мой коллега, поэтому я сохранил все, что было в файле, но это поможет очистить его много! – Chris

Смежные вопросы