Windows 8 Regedit ต้องใช้พา ธ สัมบูรณ์ที่ส่งผ่านสำหรับไฟล์รีจิสตรี


1

ฉันกำลังสร้างชุดของชุดสคริปต์สำหรับระบบสร้าง / ทดสอบอัตโนมัติของเราซึ่งทำงานในระบบปฏิบัติการที่แตกต่างกันเพื่อตั้งเงื่อนไขบางอย่างสำหรับสภาพแวดล้อมที่แตกต่างกันและฉันสังเกตว่า Windows 8 ดูเหมือนว่าจะจัดการอาร์กิวเมนต์บรรทัดคำสั่ง regedit.exe แตกต่างจาก Windows XP ถึง 7 .

ฉันใช้คำสั่ง:

regedit.exe /s relative_path\registry_settings.reg

สิ่งนี้ทำงานได้อย่างถูกต้องจนกว่าเราจะไปที่โหนด Windows 8 ณ จุดนั้นมันไม่ได้ปล่อยข้อผิดพลาดใด ๆ แต่ย้ายไปราวกับว่ามันทำงานได้โดยไม่ต้องทำการเปลี่ยนแปลงรีจิสทรีใด ๆ (และชุดทดสอบทั้งหมดของฉันล้มเหลวและทำให้ฉันกลัว)

เพื่อให้ Windows 8 ทำงานได้ฉันต้องใช้เส้นทางที่แน่นอนเช่น:

regedit.exe /s \absolute_path\registry_settings.reg

นี่เป็นการเปลี่ยนแปลงโดยเจตนาจาก Microsoft หรือเป็นไปได้ว่ามีการตั้งค่าสภาพแวดล้อมที่มีผลกระทบกับเรื่องนี้หรือไม่? มีวิธีแก้ปัญหาที่ดีกว่าการใช้เส้นทางที่แน่นอน (ซึ่งเปราะบางและจะต้องมีการบำรุงรักษาเพิ่มเติมในอนาคต)?


1
สคริปต์ค้างคาวของคุณมี "cd" ไปยังไดเรกทอรีซึ่งสามารถเลือกเส้นทางสัมพัทธ์ได้หรือไม่
Kinnectus

อย่างที่ฉันคิดว่า @BigChris กำลังพูดถึง - คุณแน่ใจหรือว่าการติดตั้ง Windows 8 ของคุณกำลังทำให้คุณตกอยู่ในเส้นทางเดียวกับที่ใช้ Windows 7 ใช่หรือไม่
Ƭᴇcʜιᴇ007

1
คุณทำงานด้วยหรือเปล่า บางที Windows 7 ของคุณคือ x86 และชนะ 8 x64? ไฟล์โปรแกรมและไฟล์โปรแกรม (x86)?
Kinnectus

คำตอบ:


2

ในชุดสคริปต์คุณสามารถใช้%~dp0เพื่อแสดงไดเรกทอรีที่ประกอบด้วยสคริปต์ชุดทำงาน ดังนั้นหากคุณมีไฟล์ที่ตำแหน่งต่อไปนี้:

C:\scripts\script.bat
C:\scripts\relative_path\registry_settings.reg

คุณสามารถเขียนสิ่งนี้ในscript.bat:

regedit.exe /s "%~dp0relative_path\registry_settings.reg"

และรับประโยชน์ทั้งหมดของเส้นทางสัมพัทธ์และยังคงใช้งานได้บน Windows 8


ตราบใดที่สคริปต์ค้างคาวอยู่ในโฟลเดอร์เดียวกันที่มีเส้นทางสัมพัทธ์มันกำลังพยายามอ่านจาก ... ?
Kinnectus

@BigChris ฉันได้อัปเดตคำตอบเพื่อให้ชัดเจนยิ่งขึ้น
วิลเลียมแจ็คสัน

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