windows - विंडोज कमांड प्रॉम्प्ट में उपनाम




alias command-prompt (9)

विंडोज 10 में कंसोल एलियंस

कंसोल उपनाम को परिभाषित करने के लिए, मैक्रो बनाने के लिए Doskey.exe का उपयोग करें, या AddConsoleAlias फ़ंक्शन का उपयोग करें।

doskey

doskey test=cd \a_very_long_path\test

parameters पास करने के लिए अंत में $* जोड़ें: doskey short=longname $*

AddConsoleAlias

AddConsoleAlias( TEXT("test"), 
                 TEXT("cd \\<a_very_long_path>\\test"), 
                 TEXT("cmd.exe"));

कंसोल उपनाम , Doskey , parameters यहां अधिक जानकारी

मैंने notepad++.exe जोड़ा है notepad++.exe पर्यावरण चर में मेरे पथ के लिए notepad++.exe

अब कमांड प्रॉम्प्ट में, notepad++.exe filename.txt खोलता है। लेकिन मैं np filename.txt खोलने के लिए सिर्फ np filename.txt करना चाहता हूं।

मैंने DOSKEY np=notepad++ का उपयोग करने की कोशिश की। लेकिन यह सिर्फ फ़ाइल खोलने के बिना पहले से ही खोला गया नोटपैड ++ सामने ला रहा है। मैं इसे फाइल कैसे खोल सकता हूं?

धन्यवाद।


आपको पैरामीटर पास करने की आवश्यकता है, इसे आजमाएं:

doskey np=notepad++.exe $*

संपादित करें (Romonov की टिप्पणी का जवाब) प्रश्न: क्या कोई तरीका है कि मैं कमांड प्रॉम्प्ट को याद कर सकता हूं, इसलिए जब भी मैं एक नया कमांड प्रॉम्प्ट खोलता हूं तो मुझे इसे चलाने की ज़रूरत नहीं है?

doskey एक पाठक कमांड है जिसे कमांड प्रोसेसर (जैसे cmd.exe) द्वारा व्याख्या किया जाता है, यह किसी अन्य प्रक्रिया में राज्य को संशोधित करने के बारे में नहीं जान सकता है (विशेष रूप से वह जो अभी तक शुरू नहीं हुआ है)।

जो लोग अपने शुरुआती कमांड शैल वातावरण को सेट करने के लिए doskey का उपयोग करते हैं, वे आम तौर पर /K विकल्प (अक्सर शॉर्टकट के माध्यम से) का उपयोग बैच फ़ाइल चलाने के लिए करते हैं जो सभी सामान्य सेटअप (जैसे-सेट विंडो का शीर्षक, रंग इत्यादि) करता है।

cmd.exe /K env.cmd

env.cmd:

title "Foo Bar"
doskey np=notepad++.exe $*
...

जोश के जवाब में जोड़ने के लिए,

आप उपनाम (एस) निम्नलिखित चरणों के साथ लगातार बना सकते हैं,

  1. अपने DOSKEY कमांड के साथ .bat या .cmd फ़ाइल बनाएं।
  2. Regedit चलाएं और HKEY_CURRENT_USER\Software\Microsoft\Command Processor
  3. AutoRun नाम के साथ स्ट्रिंग वैल्यू एंट्री जोड़ें और अपनी .bat / .cmd फ़ाइल का पूरा पथ जोड़ें।

    उदाहरण के लिए, %USERPROFILE%\alias.cmd , %USERPROFILE% साथ पथ के प्रारंभिक खंड को प्रतिस्थापित करने के लिए एकाधिक मशीनों के बीच समन्वयित करने के लिए उपयोगी है।

इस तरह, हर बार cmd चलाया जाता है, उपनाम लोड होते हैं।

पूर्णता के लिए, यहां एक प्रकार का उपनाम है जो कि उपयोगी पाया जा सकता है।

@echo off

:: Temporary system path at cmd startup

set PATH=%PATH%;"C:\Program Files\Sublime Text 2\"

:: Add to path by command

DOSKEY add_python26=set PATH=%PATH%;"C:\Python26\"
DOSKEY add_python33=set PATH=%PATH%;"C:\Python33\"

:: Commands

DOSKEY ls=dir /B
DOSKEY sublime=sublime_text $*  
    ::sublime_text.exe is name of the executable. By adding a temporary entry to system path, we don't have to write the whole directory anymore.
DOSKEY gsp="C:\Program Files (x86)\Sketchpad5\GSP505en.exe"
DOSKEY alias=notepad %USERPROFILE%\Dropbox\alias.cmd

:: Common directories

DOSKEY dropbox=cd "%USERPROFILE%\Dropbox\$*"
DOSKEY research=cd %USERPROFILE%\Dropbox\Research\
  • ध्यान दें कि $* वाक्यविन्यास एक निर्देशिका स्ट्रिंग के साथ-साथ निष्पादन योग्य के बाद काम करता है जो तर्कों में होता है। तो उपर्युक्त उदाहरण में, उपयोगकर्ता द्वारा परिभाषित कमांड dropbox research के समान निर्देशिका में इंगित करता research
  • जैसा कि रिवेनफॉल ने बताया, एक ऐसा आदेश शामिल करना एक अच्छा विचार है जो env.cmd फ़ाइल के सुविधाजनक संपादन की अनुमति देता है। उपरोक्त alias देखें। यदि आप एक cmd सत्र में हैं, cmd को पुनरारंभ करने के लिए cmd दर्ज करें और env.cmd फ़ाइल को पुनः लोड करें।

जब मैंने प्रश्न के उत्तर के लिए इंटरनेट की खोज की, तो किसी भी तरह चर्चाएं या तो केवल दृढ़ता या केवल डॉस्की के कुछ उपयोग पर केंद्रित थीं। मुझे आशा है कि किसी को यहां इन दोनों पहलुओं से लाभ होगा!

env.cmd स्थापित करने में env.cmd सहायता के लिए यहां एक .reg फ़ाइल है। यह अब ऊपर बताए गए ड्रॉपबॉक्स फ़ोल्डर के उदाहरण के रूप में सेट है।

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"AutoRun"="%USERPROFILE%\\Dropbox\\dev\\misc\\env.cmd"

डॉस्की का उपयोग करना ऐसा करने का सही तरीका है, लेकिन कमांड प्रॉम्प्ट विंडो बंद होने पर यह रीसेट हो जाती है। आपको उस लाइन को .bashrc समतुल्य जैसे कुछ जोड़ने की आवश्यकता है। तो मैंने निम्नलिखित किया:

  1. सिस्टम पथ चर के लिए "सी: \ प्रोग्राम फ़ाइलें (x86) \ नोटपैड ++" जोड़ें
  2. नोटपैड ++ की एक प्रति बनाएं। Exe (बिल्कुल उसी फ़ोल्डर में) और इसे np.exe पर पुनर्नामित करें

ठीक काम करता है!


यदि आप बस कुछ सरल आदेशों के लिए जा रहे हैं, तो आप इन चरणों का पालन कर सकते हैं:

  1. C: \ Aliases नामक फ़ोल्डर बनाएं
  2. अपने पथ में सी: \ Aliases जोड़ें (इसलिए इसमें कोई भी फाइलें हर बार पाई जाएंगी)
  3. आप चाहते हैं कि प्रत्येक उपनाम के लिए सी: \ Aliases में एक .bat फ़ाइल बनाएँ

शायद ओवरकिल, लेकिन Argyll से (अन्यथा उत्कृष्ट) जवाब के विपरीत, यह हर बार इस लोडिंग की समस्या हल करता है।

उदाहरण के लिए, मेरे पास निम्न फ़ाइल के साथ dig2.bat नामक एक फ़ाइल है:

@echo off
echo.
dig +noall +answer %1

आपकी एनपी फाइल में निम्नलिखित होंगे:

@echo off
echo.
notepad++.exe %1

एफडब्ल्यूआईडब्ल्यू, मेरे पास मेरे सी: \ Aliases निर्देशिका में लगभग 20 उपनाम (अलग .bat फ़ाइलें) हैं - मैं बस आवश्यकतानुसार नए बनाते हैं। शायद सबसे अच्छा नहीं, लेकिन यह ठीक काम करता है।


यह देखते हुए कि आपने नोटपैड ++ जोड़ा है। अपने पैथ चर के लिए exe, यह अतिरिक्त सरल है। निम्नलिखित कोड के साथ np.bat नामक आपके System32 फ़ोल्डर में एक फ़ाइल बनाएं:

@echo off
call notepad++.exe %*

%* उन सभी तर्कों के साथ गुजरता है जो आप np कमांड को notepad++.exe कमांड देते हैं।

संपादित करें: आपको सिस्टम 32 फ़ोल्डर में फ़ाइलों को सहेजने के लिए व्यवस्थापक पहुंच की आवश्यकता होगी, जो मेरे लिए थोड़ा सा भद्दा था। मैंने अभी फ़ाइल को कहीं और बनाया है और इसे मैन्युअल रूप से System32 पर ले जाया है।


वैकल्पिक रूप से आप cmder उपयोग कर सकते हैं जो आपको लिनक्स की तरह उपनाम जोड़ने देता है:

alias subl="C:\Program Files\Sublime Text 3\subl.exe" $*

सबसे पहले, आप np.cmd नाम की एक फ़ाइल बना सकते हैं और उसे उस फ़ोल्डर में डाल सकते हैं जो PATH खोज सूची में है। फिर, नीचे के रूप में np.cmd फ़ाइल संपादित करें:

@echo off
notepad++.exe

roryhewitt उत्तर पर विस्तार।

डॉस्की पर .cmd फ़ाइलों का उपयोग करने का एक लाभ यह है कि ये "उपनाम" तब पावरशेल या डब्लूएसएल (लिनक्स के लिए विंडोज सबसिस्टम) जैसे अन्य गोले में उपलब्ध हैं।

बैश में इन आदेशों का उपयोग करने वाला एकमात्र गोचा यह है कि यह थोड़ा और सेटअप ले सकता है क्योंकि आपको अपने "उपनाम" को कॉल करने से पहले कुछ पथ कुशलतापूर्वक करने की आवश्यकता हो सकती है।

उदाहरण के लिए मेरे पास vs.cmd है जो विजुअल स्टूडियो में एक फ़ाइल को संपादित करने के लिए मेरा "उपनाम" है

@echo off
if [%1]==[] goto nofiles
start "" "c:\Program Files (x86)\Microsoft Visual Studio 
11.0\Common7\IDE\devenv.exe" /edit %1
goto end
:nofiles
start "" "C:\Program Files (x86)\Microsoft Visual Studio 
11.0\Common7\IDE\devenv.exe" "[PATH TO MY NORMAL SLN]"
:end

जो वीएस (इस मामले में वीएस2012 - लेकिन स्वाद में समायोजित) मेरे "सामान्य" प्रोजेक्ट का उपयोग करके कोई फ़ाइल नहीं देता है, लेकिन जब फ़ाइल दी जाती है तो एक चल रहे वीएस खोलने के लिए संलग्न करने का प्रयास करेगा जो "उस परियोजना के भीतर" फ़ाइल शुरू करने के बजाय वीएस का नया उदाहरण

इसे बैश से उपयोग करने के लिए मैं फिर से बनाम एक अतिरिक्त स्तर जोड़ता हूं क्योंकि "बनाम माईफाइल" हमेशा काम नहीं करेगा

alias vs='/usr/bin/run_visual_studio.sh'

जो vs.cmd को कॉल करने से पहले पथ को समायोजित करता है

#!/bin/bash
cmd.exe /C 'c:\Windows\System32\vs.cmd' "`wslpath.sh -w -r $1`"

तो इस तरह से मैं बस कर सकता हूँ

vs SomeFile.txt

कमांड प्रॉम्प्ट में, पावर शैल या बैश और यह मेरे चल रहे विजुअल स्टूडियो में संपादन के लिए खुलता है (जो सिर्फ मेरे खराब मस्तिष्क को VI आदेशों से निपटने से बचाता है या कुछ ऐसे में जब मैं बस वीएस में संपादन कर रहा हूं)।





command-prompt