0

「reg query」コマンドを使用して多数のレジストリ ファイルをチェックするバッチ ファイルを実行しています。エラー メッセージをエラー ログ (ErrorLog.txt) に送信するように設定し、メインの結果テキスト ファイル (REGValues.txt) でエラー ログを確認するようにユーザーに指示します。問題は、REGValues.txt ファイル全体でこれらの一見ランダムな空白行を取得することです。これらの空白行を挿入しないようにするにはどうすればよいですか?

これは私のコードの一部で、通常は空白行に追加される場所を過ぎています。

 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.
4

2 に答える 2

1

よくご確認ください。

最初の問題:キー名はNOT終了する必要があります\-私はW7を使用し、異なる結果を取得します-端末\対なし--\端末

2番目の問題: IF ERRORLEVEL 0(HKLM\SYSTEM\CurrentControlSet\Control\Session Manager) は常に真です。nまたはIF ERRORLEVEL nn より大きい場合は trueerrorlevel

3 番目の問題: 1>>-1冗長です (スタイルの問題 - それともタイピングが好きですか?)

4 番目:@echo onスクリプトの開始時にecho、バッチ コードの ing をオフにします。さらに@echos、冗長です-echo十分です。

\さて、逆説的に、キーから端末を削除するとMORE空の行が生成されることがわかります。req query空白のヒープを含む適切な間隔のレポートを出力します。報告された値は改行で導入され、別の改行で終了します-またはそう思われます...

于 2013-07-09T00:17:37.613 に答える
0

理由はまだわかりませんが、別のアプローチをとることで解決策を見つけました。ファイル内の任意の空白行の理由を突き止めようとする代わりに、ファイルの作成後に行を削除する方法を見つけることにしました。

このコマンド (バッチ ファイルの最後に配置) を使用して、空白行を削除しました。

@echo Cleaning File

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

@echo Finished Cleaning File
于 2013-07-08T22:27:47.847 に答える