Msys शेल से आंतरिक cmd कमांड कैसे चलाएं?


19

विंडोज CMDउपयोगिता में कई आंतरिक कमांड हैं, जैसे कि mklinkmsysशेल से उनका उपयोग कैसे किया जा सकता है ?

से CMDकी प्रलेखन , /cस्विच एक कमांड और बाहर निकलने पर अमल करने के लिए इस्तेमाल किया जा सकता है; लेकिन यह काम नहीं करता है।

  • अगर मैं ऐसा आदेश निष्पादित नहीं है और खोल से बाहर निकल गया नहीं है।cmd /c mklinkmklinkCMD

Enter दबाने से पहले:

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

उपरांत:

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

प्रक्रिया मॉनिटर स्क्रीनशॉट:

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

  • कमांड को पृष्ठभूमि प्रक्रिया के रूप में चलाने की कोशिश कर रहा है: cmd /c mklink &जाहिरा तौर पर काम करता है - mklinkकमांड निष्पादित होता है, लेकिन CMDशेल समाप्त नहीं होता है। हर बार Enterदबाया जाता है, CMDसक्रिय शेल बन जाएगा।

cmd /c mklinkमेरे लिए मेरे सी शेल के साथ, सिग्विन के bashसाथ और साथ काम करता है cmd.exe। लेकिन मुझे ऊंचा चलना पड़ा या फिर मुझे शिकायतें मिलीं, "इस ऑपरेशन को करने के लिए आपके पास पर्याप्त विशेषाधिकार नहीं हैं।" मैंने कोशिश नहीं की है msysक्योंकि मैंने इसे स्थापित नहीं किया है लेकिन मुझे संदेह है कि यह समस्या है। मुझे शक है कि कुछ और चल रहा है। एक ट्रांसक्रिप्ट या एक स्क्रीन शॉट जो आपने किया और जो हुआ वह मददगार हो सकता है।
निकोल हैमिल्टन

@Nicole Hamilton, स्क्रीनशॉट जोड़े गए। के लिए mklinkकरने के लिए काम करते हैं, खोल वास्तव में व्यवस्थापक के रूप में चलाने के लिए की जरूरत है; लेकिन मेरी समस्या यह है कि मैं किसी भी आंतरिक कमांड को cmdशेल के बिना या तो पृष्ठभूमि में नहीं ले सकता या चला नहीं सकता। यह समस्या सरल आदेशों के लिए भी मौजूद है, जिन्हें व्यवस्थापक की आवश्यकता नहीं है, जैसे कि dir
मिहाई रोटारू

क्या आपके पास एक उपनाम, प्रक्रिया परिभाषा या स्क्रिप्ट है जो अवरोधन हो सकती है cmd?
निकोल हैमिल्टन

@Nicole Hamilton, nope; मैंने @Maxiums की सलाह ली और प्रोसेस मॉनीटर को चलाया, और जैसा कि मैंने संलग्न स्क्रीनशॉट में देखा जा सकता है, मुद्दा यह है कि इसमें msysकनवर्ट किया /cजाता है c:\ । इसका उत्तर यह है कि इससे बच जाएं, और कमांड को चलाएं cmd //c mklink
मिहाई रोटारू

जवाबों:


14
  1. Cmd.cmd या cmd.bat के लिए अपना% PATH% खोजें। वे आपके cmd में हस्तक्षेप कर सकते हैं

  2. प्रोसेस मॉनिटर चलाएं और अपना चलाएं cmd /c mklink। वास्तव में निष्पादित आदेशों के लिए ProMMon लॉग की जांच करें।


26
प्रक्रिया मॉनिटर ने समस्या को ट्रैक करने में मदद की। वह यह है कि msysमें परिवर्तित /cहो जाएगा c:\ ; वह भागे जाने की आवश्यकता है: cmd //c mklink। इन रूपांतरणों को जिस तरह से किया गया है वह यहाँ बताया गया है
मिहाई रोटारू

1
@MihaiRotaru इस टिप्पणी का उत्तर होना चाहिए
laktak

2

win7 / cygwin / bash में एक ही समस्या थी, समाधान दो बार cmd लॉन्च करना है, और cmd द्वारा आवश्यकतानुसार बैकस्लैश में स्लैश को परिवर्तित करना है (उदाहरण के लिए): REPO_DIR=${REPO_DIR////\\} # Example, Turn c:/cvs into c:\cvs for cmd
cmd /C "cmd /C mklink /D .Repo $REPO_DIR" # launch cmd /C cmd /C cmd


1

प्रक्रिया मॉनिटर ने समस्या को ट्रैक करने में मदद की। वह यह है कि msysमें परिवर्तित /cहो जाएगा c:\; वह भागे जाने की आवश्यकता है: cmd //c mklink। इन रूपांतरणों को जिस तरह से किया गया है वह यहाँ बताया गया है । - मिहाई रोटारू 1 जनवरी 13 '21:32 पर

मुझे यह केवल मिहाई की टिप्पणी के आधार पर काम करने के लिए नहीं मिल सकता था , क्योंकि पथ में अभी भी इसमें आगे स्लैश /थे, और mklinkशिकायत की कि /msys64एक वैध स्विच नहीं था।

इसलिए मैंने इसे काम करने के लिए एक बैच स्क्रिप्ट लिखी।

यहां बताया गया है कि मैं MSYS से अपनी बैच स्क्रिप्ट कैसे कॉल करता हूं:

 $ mingw_ln.bat "$destination" "$targetpath"

और, बैच स्क्रिप्ट स्ट्रिंग प्रतिस्थापन के लिए पैरामीटर विस्तार वाक्यविन्यास का उपयोग करके उन दो रास्तों को लेता है, और परिवर्तित करता /है । 1\:OLD=NEW

set LINK=%1
set TARGET=%2

REM Convert POSIX paths to Windows paths
set LINK=%LINK:/=\%
set TARGET=%TARGET:/=\%

mklink /D %LINK% %TARGET%

1 यह बाश के ${PARAM:/OLD/NEW}सिंटैक्स के समान है , जो इससे परिचित हैं

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