ชุดสคริปต์ความช่วยเหลือ, ค้นหา, แทนที่รีจิสตรีคีย์


1

ฉันพยายามหาสาเหตุที่คำสั่งการนำเข้า reg ของฉันไม่ทำงานในสคริปต์ด้านล่าง เมื่อฉันเรียกใช้การนำเข้า fileName.reg reg จาก DOS มันทำงานได้ดี แต่เมื่อรวมอยู่ในสคริปต์ด้านล่างมันไม่ทำอะไรเลยและฉันไม่พบสาเหตุ ฉันเห็นการส่งออกเสร็จสมบูรณ์อย่างถูกต้องและรูปแบบก็โอเคสำหรับฉัน เมื่อฉันใช้คำสั่ง reg import บนไฟล์ที่ส่งออกเดียวกันมันก็ใช้ได้ดี ด้านล่างเป็นรหัส

@echo off
SETLOCAL ENABLEEXTENSIONS
SETLOCAL DISABLEDELAYEDEXPANSION
REM  This script updates the Windows Registry for the 

REM update Admin Nodes
set service1Key=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\MyService1\Parameters
set service2Key=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\MyService2\Parameters

echo updating [%service1Key%]
call :updateRegKeys %service1Key%
echo updating [%service2Key%]
call :updateRegKeys %service2Key%

SET count=3
set looper=1

FOR /L %%A IN (1,1,%count%) DO (call :updateAllServers %%A)
GOTO:EOF

:updateAllServers
SET domainKey=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\MyDomain%looper%\Parameters
SET otherDomainKey=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\MyOtherDomain%looper%\Parameters
echo [%domainKey%]
echo [%otherDomainKey%]
echo .
call :updateRegKeys %domainKey%
call :updateRegKeys %otherDomainKey%
set /a looper+=1
goto:eof

:updateRegKeys
SETLOCAL ENABLEEXTENSIONS
SETLOCAL DISABLEDELAYEDEXPANSION
set "registrykey=%1"
set findv="-Xms512m"
set replacev="-Xms512m something that is long"
echo "Updating registry values, please wait..."
REG EXPORT "%registrykey%" origReg.txt
call :findReplace %findv% %replacev% origReg.txt > newkeys.reg
reg import newkeys.reg
del /q newkeys.reg origReg.txt

:findReplace
REM finds and replaces a string 
SETLOCAL ENABLEEXTENSIONS
SETLOCAL DISABLEDELAYEDEXPANSION
if "%~1"=="" findstr "^::" "%~f0"&GOTO:EOF
for /f "tokens=1,* delims=]" %%A in ('"type %3|find /n /v """') do (
set "line=%%B"
if defined line (
    call set "line=echo.%%line:%~1=%~2%%"
    for /f "delims=" %%X in ('"echo."%%line%%""') do %%~X
) ELSE echo.
)
goto:eof

การนำเข้า origReg.txt ด้วยตนเอง (ซึ่งคุณเพิ่งส่งออก) นั้นใช้ได้ แต่ newkeys.reg ถูกสร้างขึ้นอย่างถูกต้องหรือไม่ คุณสามารถนำเข้าสิ่งนั้นจากบรรทัดคำสั่งได้หรือไม่ นอกจากนี้ข้อผิดพลาดใด ๆ
Karan

ใช่ฉันสามารถนำเข้าไฟล์ที่สร้างขึ้นใหม่ (newkey.reg) ด้วยตนเองโดยไม่มีปัญหาจากบรรทัดคำสั่ง ในการทดสอบให้ใส่เครื่องหมายคอมเมนต์ออกอย่างง่าย ๆ newkeys.reg origReg.txt และไฟล์จะถูกลบทิ้งเพื่อให้คุณนำเข้าด้วยตนเอง
powerhouse

แปลก. และมี ไม่ ข้อผิดพลาดทั้งหมดหรือไม่
Karan

นี่คือผลลัพธ์ตัวอย่างที่ฉันได้รับเมื่อฉันเรียกใช้: "การอัปเดตค่ารีจิสทรีโปรดรอ ... " การดำเนินการเสร็จสมบูรณ์ การดำเนินการเสร็จสมบูรณ์ ไวยากรณ์ของคำสั่งไม่ถูกต้อง ในขณะที่คุณเห็นบรรทัดสุดท้ายบ่นเกี่ยวกับคำสั่งอื่น แต่ไม่แน่ใจว่าทำไมมันพยายามที่จะเรียกใช้อีกหนึ่ง ..... เกิดขึ้นเมื่อฉันเรียกใช้โดยใช้เส้นทางรีจิสทรีเพียงเส้นทางเดียว ด้วยวิธีหนึ่งดูเหมือนว่าจะทำงานอย่างถูกต้องแม้จะมีการนวดข้อผิดพลาดครั้งสุดท้ายที่นั่น ฉันกำลังเล่นกับการหยุด "ping 1.1.1.1 -n 5 & gt; null" เพื่อดูว่าบางทีมันเร็วเกินไปที่มันจะล้มเหลว
powerhouse

คำตอบ:


0

โดยการเพิ่มระบบ

ping 1.1.1.1 -n 5 > null

ฉันสามารถหยุดสักครู่ในขณะที่ไฟล์ถูกเขียนลงดิสก์ ... นี้ช่วยแก้ปัญหา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.