एक फ़ाइल को देखते हुए, एक अलग (पहचान संरचित) निर्देशिका में स्थान प्राप्त करें?


1

Windows शेल और cmd स्क्रिप्टिंग के लिए पूरी तरह से हरा होने के कारण, मैं इस विशेष समस्या के खिलाफ अपना सिर पीट रहा हूं, लेकिन कुछ भी नहीं आ रहा है।

मैं जो करने का लक्ष्य रख रहा हूं, वह WinMerge को लॉन्च करने के लिए एक फाइल पर राइट क्लिक करने के लिए एक संदर्भ मेनू आइटम जोड़ रहा है और एक अलग, स्थिर निर्देशिका में उस फाइल से तुलना कर रहा है। इससे कोई फर्क नहीं पड़ता अगर यह एक विशेष cmd फ़ाइल को आमंत्रित करता है जो तब निर्देशिकाओं को हल करने के लिए ऑपरेशन करता है।

उदाहरण के लिए, हमारे पास निर्देशिकाओं और फ़ाइलों का काल्पनिक सेट है:

C:\released\versions\1.0\lib\libcode.cpp
C:\released\versions\1.0\component\componentcode.cpp
C:\dev\lib\libcode.cpp
C:\dev\component\componentcode.cpp

C: \ जारी \ संस्करण \ 1.0 \ घटक \ घटककोड पर राइट-क्लिक करें और इसे चुनने से WinMerge खुल जाएगा और इसकी तुलना C: \ dev \ घटक \ घटककोड करें।

हम यह मान सकते हैं कि सब कुछ \ _ \ _ और \ _ \ _ संरचना-वार सभी इरादों और उद्देश्यों के लिए समान है। स्पष्ट रूप से WinMerge के लिए लॉन्च कमांड स्वयं तुच्छ है, लेकिन मुझे आधार कोड निर्देशिका के अंदर फ़ाइलों के सापेक्ष पथ निर्धारित करने में परेशानी हो रही है।

जवाबों:


1

शायद यह आपकी मदद करेगा:

मेरे पास एकल फ़ाइलों से स्वतः निकालने वाले ज़िप बनाने के लिए एक स्क्रिप्ट है। मैंने स्पष्ट कारणों के लिए इस स्क्रिप्ट को संदर्भ मेनू में जोड़ा है। जो आप कोशिश कर सकते हैं वह स्क्रिप्ट को कॉल करने वाले संदर्भ मेनू में एक कमांड जोड़ रहा है, %1स्क्रीनशॉट में राइट-क्लिक की गई फ़ाइल का पूरा रास्ता है, जिसमें फ़ाइल नाम भी शामिल है:

यहाँ छवि विवरण दर्ज करें

संक्षेप में, HKCR \ * \ शेल के तहत एक नई reg कुंजी बनाएं और इसे संदर्भ मेनू पर जो भी आप दिखाना चाहते हैं उसका नाम दें। 'कमांड' लेबल के तहत एक नई कुंजी बनाएं, और उस कुंजी के डिफ़ॉल्ट मान के लिए इसे उस कमांड पर सेट करें जिसे आप कॉल करना चाहते हैं। आपके मामले में आप संभवत: एक साधारण पॉवरशेल स्क्रिप्ट चाहते हैं जो एक पैरामीटर के रूप में पथ में ले जाती है और उस पर आधारित एक नया पथ बनाता है, और winMerge और उन दो रास्तों में गुजरता है। Powershell को लेने के लिए मुश्किल नहीं है, कुछ पसंद है

param([String]$Path=$null)

$CodeDir = "C:\dev\component\"

$File1 = $Path
$File2 = "$CodeDir$(Get-ItemProperty $Path).Name"

Start-Process WinMerge.exe -Argumentlist "$File1 $File2"

स्पष्ट रूप से कुछ अनुकूलन हैं जो वहां हो सकते हैं लेकिन उम्मीद है कि आप बिंदु देखेंगे। मेरे पास WinMerge नहीं है इसलिए मुझे सही सिंटैक्स की जानकारी नहीं है, लेकिन यह इस बात की रूपरेखा है कि क्या करने की आवश्यकता है। अपनी स्क्रिप्ट को कॉल करने के लिए आप मेरे स्क्रीनशॉट को देख सकते हैं और मेरे स्क्रिप्ट पथ को आपके साथ बदल सकते हैं, आपको स्थापित होने वाले शक्तियां की आवश्यकता होगी जो Vista + पर मानक आती है।


1
धन्यवाद! ऐसा लगता है कि पॉवर्सशेल स्क्रिप्ट वही होगी जो मुझे चाहिए। मैं Directory.Parent ऑब्जेक्ट्स और इतने पर के माध्यम से रिश्तेदार निर्देशिका को आसानी से प्राप्त करने में सक्षम होना चाहिए।
सी-मार्ट

@ C-Mart आप ऐसा कर सकते हैं, या जिस तरह से linux में भी \ _ \ _ को जोड़ सकते हैं।
MDMoore313
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.