विंडोज: सीडी पर स्क्रिप्ट चलाएँ


1

लिनक्स पर, मुझे कई स्क्रिप्ट्स मिल रही हैं जो एक निर्देशिका में बदल रही हैं। रेपो, रोटेटिंग लॉग्स आदि को अपडेट करने जैसे कार्य एक छोटे से बैश स्क्रिप्ट के माध्यम से तय किए जाते हैं जो बैश की "सीडी" को ओवरराइड करता है और मेरी कुछ स्क्रिप्ट्स पर निर्भर करता है कि मैं किस निर्देशिका में बदल रहा हूं।

मेरे ubuntu पर, यह इस तरह एक बहुत कुछ दिखता है:

function cd() { 
  builtin cd "$@" && /home/cfv/scripts/changedir-hooks
}

खिड़कियों पर मौजूदा "सीडी" को ओवरलैप करने के मेरे सभी प्रयास व्यर्थ हो गए हैं, और एसओ पर मुझे यहां आने और पूछने के लिए कहा गया था कि शायद मैं कहीं गायब हूं।

स्पष्ट करने के लिए, मुझे समझ में आया कि मैं अपना स्वयं का cd.cmd इसमें कुछ सामानों के साथ रख सकता हूं, लेकिन मैं विंडोज के बाद इसे चलाने में सक्षम नहीं हूं cd, और जो मैं करना चाहता हूं वह पहले निर्देशिका को बदलना है और thenउस तथ्य पर कार्य करना है।

क्या विंडोज ऐसा कर सकता है?

जवाबों:


0

में मार खोल कमान खोजें अनुक्रम , एक शेल फंक्शन एक पर पूर्वता लेता है BUILTIN आदेश । विंडोज शेल में मेरे सर्वश्रेष्ठ ज्ञान के अनुसार इस तरह की कोई अवधारणा लागू नहीं की गई है (हालांकि एक doskeyमैक्रो इसे फिर से तैयार कर सकता है): एक आंतरिक कमांड एक ही नाम की कुछ भी चीज़ों पर वरीयता लेता है ( कमांड सर्च सीक्वेंस देखें )। इसलिए cd [parameters]वर्तमान निर्देशिका को हमेशा प्रदर्शित करता है या बदलता है (देखें cd /?)।

आप cd.cmd [parameters]या तो उपयोग कर सकते हैं , या अपनी cmdस्क्रिप्ट का नाम बदल सकते हैं , अगला उदाहरण देखें। यह cdnस्क्रिप्ट आंतरिक कमांड निष्पादित करती है cdऔर फिर वर्तमान CLI विंडो शीर्षक को वर्तमान निर्देशिका पथ की तरह बदल देती है:

@rem cdn.bat
@rem change directory (and drive) || abort script processing in case of bad success
@cd /D %* || @goto :eof
@rem eliminate (if any in %*) trailing backslashes, surrouding double-quotes
@rem and/or (combined) symbols to current, parent or root directory (., .., \)
@call :window_title "%CD%"
@rem or, to title window to bare folder name, use: 
@rem @for /F "tokens=*" %%G in ("%CD%") do @title %%~nG%%~xG
@goto :eof

:window_title
  @if "%~p1%~n1%~x1" == "\%~n1%~x1" (
    @rem window title to 'X:\folder' on highest-level path or to 'X:\' on drive root
    @title %~d1%~p1%~n1%~x1
  ) else (
    @rem window title to 'X:\...\folder' otherwise (i.e. nor root, nor highest-level)
    @title %~d1^\ ..^\%~n1%~x1
  )
  @exit /B
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.