2014-03-26 4 views
0

본하셨습니까 REG_MULTI_SZ 값에서 informaiton 로그인을 시도 배치 - Assigning newline character to a variable in a batch script고정 :

나는 REG_MULTI_SZ 여러 라인 분할을하고자하고

..

예를 들어, 우리가 가진 :

if %PROCESSOR_ARCHITECTURE% == AMD64 SET ApacheKey="HKLM\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat6\Parameters\Java" 
if NOT %PROCESSOR_ARCHITECTURE% == AMD64 SET ApacheKey="HKLM\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat6\Parameters\Java" 

POWERSHELL "Get-ItemProperty 'HKLM:%ApacheKey%' |select -ExpandProperty Options" >> somelog.txt 

아래의 답변 덕분에 게시물이 - How to read multi line multi string registry entries in PowerShell? 에 있습니다. 현재 작동 중입니다.

참고 : 나는 vbs를 사용할 수는 없지만 스크립트를 코드화해야하므로 오히려 사용하지 않을 것입니다.

"\ 0"구분 기호를 구분할 수 있습니다. 지금 당장 가지고있는 문제는 명령 줄에서 echo % SETTINGS %를 입력하면 새 줄을 볼 수 있다는 것입니다. 원래 변수를 텍스트 파일에 PIPE해야 할 것입니다. 파일을 읽고 (입력) "\ 0"이 에코로 발견되면. 파일을 올바르게 써야합니다.

원래 로그 쇼 :

-Dcatalina.base=C:\tomcat\0-Dcatalina.home=C:\tomcat\0-Djava.endorsed.dirs=C:\tomcat\endorsed\0-Djava.io.tmpdir=C:\tomcat\temp\0-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager\0-Djava.util.logging.config.file=C:\tomcat\conf\logging.properties\0-Dcom.sun.management.jmxremote\0-Dcom.sun.management.jmxremote.port=1092\0-Dcom.sun.management.jmxremote.ssl=false\0-Dcom.sun.management.jmxremote.authenticate=false\0-XX:MaxPermSize=256m\0-Xmx1024m\0-Xms1024m\0-Xverify:none\0-XX:+UseConcMarkSweepGC\0-XX:+UseParNewGC\0-XX:MinHeapFreeRatio=40\0-XX:MaxHeapFreeRatio=60\0-XX:MaxGCPauseMillis=200 

내가 그것을 보여주고 싶은 것은 :

-Dcatalina.base=C:\tomcat 
-Dcatalina.home=C:\tomcat 
-Djava.endorsed.dirs=C:\tomcat\endorsed 
-Djava.io.tmpdir=C:\tomcat\temp 
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 
-Djava.util.logging.config.file=C:\tomcat\conf\logging.properties 
-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=1092 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 
-XX:MaxPermSize=256m 
-Xmx1024m 
-Xms1024m 
-Xverify:none 
-XX:+UseConcMarkSweepGC 
-XX:+UseParNewGC 
-XX:MinHeapFreeRatio=40 
-XX:MaxHeapFreeRatio=60 
-XX:MaxGCPauseMillis=200 

감사합니다.

답변

1

그것은 당신의 배치 스크립트 작업의 VBScript를 사용하여 간단 할 수있다 :

:: Create readMulti.vbs 
(
echo/Const HKEY_LOCAL_MACHINE = ^&H80000002 
echo/strComputer = "." 
echo/Set oReg=GetObject^("winmgmts:{impersonationLevel=impersonate}!\\" ^& _ 
echo/ strComputer ^& "\root\default:StdRegProv"^) 
echo/strKeyPath = "SOFTWARE\Apache Software Foundation\Procrun 2.0\tomcat6\Parameters\Java" 
echo/strValueName = "Options" 
echo/oReg.GetMultiStringValue HKEY_LOCAL_MACHINE,strKeyPath, _ 
echo/ strValueName,arrValues 
echo/For Each strValue In arrValues 
echo/ Wscript.Echo strValue 
echo/Next)>readMulti.vbs 
for /f "tokens=*" %%a in ('cscript //nologo readMulti.vbs') do (echo/%%a>>log.txt) 
del readMulti.vbs 
+0

내가 여기에 선택의 여지가 있습니다 .. 당신이 바로 생각합니다. 그러나 우리는 이제 vbs 파일을 코드화해야합니다. PowerShell로 가져 가야 할 수도 있습니다. 제쳐두고, 결과를 파이프 아웃하려고 할 때 같은 것을 보았습니다 :'systeminfo | 네트워크 카드 ">> % LOGRESULT % '를 찾아 내려면 여러 줄이 필요합니다. – Leptonator

관련 문제