वर्तमान निर्देशिका के लिए पूर्ण पथ प्राप्त करने के लिए विंडोज शेल कमांड?


223

क्या एक विंडोज कमांड लाइन कमांड है जिसे मैं वर्तमान कार्यशील निर्देशिका के लिए पूर्ण पथ प्राप्त करने के लिए उपयोग कर सकता हूं?

इसके अलावा, मैं बैच फ़ाइल में प्रयुक्त चर के अंदर इस पथ को कैसे स्टोर कर सकता हूं?


ढूँढें / dir / to / start / from -ype f -ls यह प्रारूप सांख्यिक खोजने के लिए दिनांक / dir / to / start / from -type f -exec ls -l -time-style = "+% Y% m% है e% H:% M "{} \;

इस उत्तर पर एक नज़र डालें stackoverflow.com/a/52301748/2704032
विश्रांत

जवाबों:


356

cdयदि आप सीधे शेल का उपयोग कर रहे हैं, या %cd%यदि आप इसे किसी बैच फ़ाइल में उपयोग करना चाहते हैं (तो यह पर्यावरण चर की तरह व्यवहार करता है) बिना किसी तर्क के उपयोग करें ।


11
कैसे था कि आप समझते हैं कि वह क्या से कहने की कोशिश कर रहा था कि ? और, डॉस और विंडोज cmd के तहत, आम तौर पर सिर्फ "सीडी"
Rook

10
ईमानदारी से, मैं कुछ और नहीं सोच सकता था क्योंकि वे पूछे गए प्रश्न के रूप में पूछने की कोशिश कर रहे होंगे।
ट्रेवर ब्रम्बल

1
क्या मैं इस पथ को एक .bat फ़ाइल में एक चर के अंदर संग्रहीत कर सकता हूं?
user62958

@unknown - पहली जगह में मूल समस्या का वर्णन करने से आप बेहतर हो सकते हैं।
रक

100

आप निम्नानुसार एक बैच / पर्यावरण चर सेट कर सकते हैं:

SET var=%cd%
ECHO %var%

विंडोज 7 x64 cmd.exe से नमूना स्क्रीनशॉट।

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

अद्यतन: यदि आपSET var = %cd%इसके बजाय करते हैंSET var=%cd%, तो नीचे ऐसा होता है। Jeb के लिए धन्यवाद।

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

एक बैच फ़ाइल से वर्तमान निर्देशिका कैप्चरिंग


2
प्रश्न के अनुसार, इस उत्तर को वास्तव में स्वीकार किया जाना चाहिए।
रेने Nyffenegger

7
लेकिन यह काम नहीं करता है, जैसा SET var = %cd%कि वैरिएबल में वैल्यू var<space>नहीं है var। आपको सेट कमांड में रिक्त स्थान से बचना चाहिए
jeb

1
प्रश्न के अनुसार, इस उत्तर को वास्तव में स्वीकार किया जाना चाहिए।
श्रीदत्त कोठारी

51

setकमांड के लिए Windows मदद को उद्धृत करें ( set /?):

यदि कमांड एक्सटेंशन सक्षम हैं, तो कई गतिशील हैं
पर्यावरण के चर जो विस्तारित किए जा सकते हैं, लेकिन इनमें दिखाई नहीं देते
SET द्वारा प्रदर्शित चर की सूची। ये परिवर्तनशील मूल्य हैं
हर बार गतिशील रूप से गणना की जाती है कि चर का मान विस्तृत है।
यदि उपयोगकर्ता इन नामों में से एक के साथ एक चर को स्पष्ट रूप से परिभाषित करता है, तो
वह परिभाषा नीचे वर्णित डायनामिक को ओवरराइड करेगी:

% CD% - वर्तमान निर्देशिका स्ट्रिंग में फैलता है।

% DATE% - DATE कमांड के समान प्रारूप का उपयोग करके वर्तमान तिथि तक फैलता है।

% TIME% - TIME कमांड के समान प्रारूप का उपयोग करके वर्तमान समय में फैलता है।

% RANDOM% - 0 और 32767 के बीच एक यादृच्छिक दशमलव संख्या तक फैलता है।

% ERRORLEVEL% - वर्तमान ERRORLEVEL मान में फैलता है

% CMDEXTVERSION% - वर्तमान कमांड प्रोसेसर एक्सटेंशन में फैलता है
    संस्करण संख्या।

% CMDCMDLINE% - मूल कमांड लाइन तक विस्तारित होता है जिसने आह्वान किया था
    कमांड प्रोसेसर।

%CD% - expands to the current directory string.भाग पर ध्यान दें ।


26

यूनिक्स पर?

लोक निर्माण विभाग


2
ओपी ने मूल रूप से "कमांड" के लिए कहा और ओएस निर्दिष्ट नहीं किया। ओएस अब निर्दिष्ट किया गया है इसलिए यह उत्तर अब प्रासंगिक नहीं है।
Tisch


17

यह हमेशा मेरे लिए काम किया है:

SET CurrentDir="%~dp0"

ECHO The current file path this bat file is executing in is the following:

ECHO %CurrentDir%

Pause

2
यह गलत काम करता है - बैच स्क्रिप्ट का मार्ग ढूंढता है, न कि वर्तमान निर्देशिका।
हैरी जॉनसन

2
ओपी के सवाल का जवाब देने के कारण अपवित्र ... और मुझे सटीक समाधान दे रहा था जिसकी मुझे तलाश थी। धन्यवाद!
ए-डिड्डी

अच्छा पकड़ा। वर्तमान निर्देशिका उस कमांड को संदर्भित कर सकती है जो फ़ाइल के स्थान के बजाय फ़ाइल को कॉल करती है।
टैम ले

9

विंडोज के लिए, cdअपने आप में आपको वर्तमान कार्यशील निर्देशिका दिखाई देगी।

UNIX और कार्य-प्रणाली के लिए, pwdसमान कार्य करेगा। आप $PWDकुछ गोले के तहत शेल चर का उपयोग भी कर सकते हैं । मुझे यकीन नहीं है कि विंडोज एक शेल वैरिएबल के माध्यम से वर्तमान वर्किंग डाइरेक्टरी प्राप्त करने का समर्थन करता है या नहीं।


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

बहुत पुरानी, ​​लेकिन सिर्फ पूर्णता के लिए: हाँ, विंडोज़ में इसके लिए एक भिन्नता है। इसका नाम (अनुमान ...) है%cd%
स्टीफन

8

विंडोज पर:

CHDIR वर्तमान निर्देशिका को प्रदर्शित करता है या परिवर्तित करता है।

लिनक्स में:

पीडब्ल्यूडी वर्तमान निर्देशिका का नाम प्रदर्शित करता है।


5

अनुवर्ती प्रश्न (चर में डेटा संग्रहीत करें) के आधार पर टिप्पणियों में chdir पोस्ट मैं शर्त लगा रहा हूं कि वह निर्देशिकाओं को बदलने के बाद इसे पुनर्स्थापित करने के लिए वर्तमान पथ को संग्रहीत करना चाहता है।

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

यदि आपको वास्तव में वर्तमान पथ को हथियाने की आवश्यकता है तो आधुनिक cmd गोले में भी एक% CD% चर है जिसे आप संदर्भ के लिए दूसरे चर में आसानी से भर सकते हैं।


5

के .batतहत एक फ़ाइल बनाएँ System32, हम इसे copypath.batवर्तमान पथ की प्रतिलिपि बनाने के लिए कमांड का नाम दे सकते हैं :

echo %cd% | clip

स्पष्टीकरण:

%cd% आपको वर्तमान पथ देगा

CLIP

Description:
    Redirects output of command line tools to the Windows clipboard.
    This text output can then be pasted into other programs.

Parameter List:
    /?                  Displays this help message.

Examples:
    DIR | CLIP          Places a copy of the current directory
                        listing into the Windows clipboard.

    CLIP < README.TXT   Places a copy of the text from readme.txt
                        on to the Windows clipboard.

अब copyclipहर जगह से उपलब्ध है।


3
@echo off
for /f "usebackq tokens=*" %%x in (`chdir`) do set var=%%x
echo The currenct directory is: %var%

लेकिन, निश्चित रूप से , gmaran23 का जवाब बहुत आसान है।


उसका उत्तर परिभाषा से बेहतर है क्योंकि आपका उत्तर गलत है। यह रिक्त स्थान वाले रास्तों के लिए काम नहीं करता है।
गैरिक

tokens=*फिक्स को जोड़ना ।
रेने न्यफेनेगर

2

Windows कमांड प्रॉम्प्ट में, chdirया cdकंसोल में वर्तमान कार्य निर्देशिका का पूरा पथ मुद्रित करेगा।

हम पथ की प्रतिलिपि बनाना चाहते हैं तो हम उपयोग कर सकते हैं: cd | clip


0

विंडोज पर, cdकार्यशील वर्तमान पथ के लिए टाइप करें ।

लिनक्स पर, pwdवर्तमान कार्य पथ के लिए।


5
एक ही समाधान के साथ पहले से ही 10 उत्तर हैं, लेकिन अधिक स्पष्टीकरण
जेब

0

संभावित कोड में से एक के रूप में

    echo off
    for /f "usebackq tokens=* delims= " %%x in (`chdir`) do set var=%var% %%x
    echo The current directory is: "%var:~1%"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.