मैं Windows निर्देशिका / फ़ाइल का छोटा पथ कैसे खोज सकता हूं?


73

मुझे उस एप्लिकेशन के लिए संक्षिप्त पथ नामों का उपयोग करने की आवश्यकता है जिसका मैं उपयोग कर रहा हूं। उदाहरण के लिए मुझे C:\PROGRA~1\इसका विरोध करना चाहिए C:\Program Files। कार्यक्रम रिक्त स्थान को संभाल नहीं सकता है और उद्धृत पथ (जैसे "C:\Program Files") को स्वीकार नहीं करेगा ।

यदि यह मदद करता है, तो मैं विंडोज 7 का उपयोग कर रहा हूं। यदि आवश्यक हो, तो मैं एक्सपी के बाद से किसी भी संस्करण तक पहुंच प्राप्त कर सकता हूं।

जवाबों:


77

प्रारंभ करें, और cmdरन बॉक्स में टाइप करें । Cmd प्रारंभ करें, और cdउस फ़ोल्डर को प्राप्त करने के लिए उपयोग करें जिसमें आप रुचि रखते हैं:

cd \

फिर

dir /x

C:\>dir /x

13/10/2011  09:14 AM    <DIR>          DOCUME~1     Documents and Settings
13/10/2011  09:05 AM    <DIR>          PROGRA~1     Program Files

तो आप रास्ते में हर सबफ़ोल्डर के लिए ऐसा करते हैं?
शाम

@endolith /sस्विच सबफ़ोल्डर पुनरावृत्ति करता है
पॉल

1
मेरा मतलब है कि आप पूरे 8.3 पथ को कैसे प्रदर्शित करते हैं?
१६

4
@Paul यह Win10 में काम नहीं करता है। कोई विचार?
AHungerArtist

3
@AHungerArtist संक्षिप्त फ़ाइल नाम आवश्यक रूप से मौजूद नहीं हैं; उनकी रचना को बंद किया जा सकता है।
हिप्पैक्सैक्स 43

37

कुछ सुविधाजनक निर्देशिका में एक बैट फ़ाइल बनाएँ, फिर आप उस पथ से लघु पथ को कॉपी और पेस्ट कर सकते हैं।

आप बस चला command.comसकते हैं और cdअपनी वर्तमान निर्देशिका में कमांड भी कर सकते हैं ।

Windows बैच स्क्रिप्ट में, %~s1छोटे नाम के लिए पथ पैरामीटर का विस्तार करता है । इस बैच फ़ाइल बनाएँ:

@ECHO OFF
echo %~s1

मैंने उसे shortNamePath.cmdफोन किया और उसे इस तरह बुलाया :

C:\> shortNamePath "c:\Program Files (x86)\Android\android-sdk"
c:\PROGRA~2\Android\ANDROI~1

यदि कोई पैरामीटर नहीं दिया गया था, तो वर्तमान निर्देशिका का उपयोग करने वाला एक संस्करण है:

@ECHO OFF
if '%1'=='' (%0 .) else echo %~s1

मापदंडों के बिना कहा जाता है:

C:\Program Files (x86)\Android\android-sdk> shortNamePath
C:\PROGRA~2\Android\ANDROI~1

SETएक नामित चर का उपयोग करना और

विंडोज कमांड प्रॉम्प्ट में उनके मूल्यों में रिक्त स्थान के साथ चर को संभालने के लिए कुछ सम्मेलन हैं जो सीखने और समझने में कुछ कठिन हैं, खासकर यदि आपके पास एक यूनिक्स पृष्ठभूमि है। तुम कर सकते हो

SET TESTPATH=c:\Program Files (x86)\Android\android-sdk

( कोई उद्धरण के साथ ), या

SET "TESTPATH=c:\Program Files (x86)\Android\android-sdk"

(उद्धरणों के गैर-सहज प्लेसमेंट पर ध्यान दें); फिर

CALL :testargs "%TESTPATH%"
        ︙

:testargs
echo %~s1
goto :eof

6
वास्तव में उपयोगी, उत्तर के रूप में चिह्नित किया जाना चाहिए!
लुकाफेरो

धन्यवाद! क्या यह SET कमांड का उपयोग कर सकता है? जैसे सेट करें AAA = C: \ program files \ what कभी \
_

@ Li3ro मैं SET वैरिएबल कमांड तरीके का पता नहीं लगा सका, लेकिन मैं बहुत करीब आ गया, आप इसे जवाब के नीचे देख सकते हैं, बस थोड़ा सा ठीक करने की जरूरत है। मैं बैच स्क्रिप्ट प्रोग्रामिंग में नहीं हूँ इसलिए मुझे नहीं पता कि कैसे।
SSpoke

यह इस तरह से उल्लेखनीय नहीं है। इसके लिए आपको लूप की आवश्यकता है
Li3ro

यह स्वीकृत उत्तर की तुलना में अधिक उपयोगी है
एविलटच

8

यहाँ एक लाइनर है :

cmd /c for %A in ("C:\Program Files") do @echo %~sA

ब्रेकडाउन :

  • cmd /c - विंडोज कमांड दुभाषिया का एक नया उदाहरण शुरू करता है, स्ट्रिंग द्वारा निर्दिष्ट कमांड को बाहर करता है और फिर समाप्त करता है
  • for %%parameter in (set) do कमांड - सशर्त रूप से कई बार कमांड करते हैं।
  • echo- स्क्रीन पर संदेश प्रदर्शित करें। @प्रतीक वही है जो ECHO OFFकेवल वर्तमान रेखा पर लागू होता है।
  • %~s - विस्तारित पथ में केवल छोटे नाम हैं।

स्रोत :


1
नाइस !!! आप "C: \ Program Files" को बदल सकते हैं। वर्तमान निर्देशिका के लिए संक्षिप्त नाम पाने के लिए
एंड्रयू स्टीट्ज

1
आपको कब / क्यों आवश्यकता होगी cmd /c? यदि आप एक कमांड प्रॉम्प्ट विंडो में हैं, तो आप केवल for %A in ("C:\Program Files") do @echo %~sAकमांड टाइप कर सकते हैं , और यदि आप इसे "रन" डायलॉग बॉक्स में टाइप करते हैं, तो परिणाम इससे पहले कि आप इसे पढ़ सकें गायब हो जाता है।
स्कॉट

2
अच्छी तरह से किया; जैसा कि @Scott बताते हैं, cmd /cजब आपको रनिंग की आवश्यकता नहीं होती है cmd; आपको PowerShell से इसकी आवश्यकता है , लेकिन फिर आपको '...'टोकन को खोलने की भी आवश्यकता है /c:cmd /c 'for %f in ("C:\Program Files") do @echo %~sf'
mklement0

8

"संक्षिप्त नाम" वास्तव में पुराना DOS 8.3 नामकरण सम्मेलन है, इसलिए सभी निर्देशिकाओं में पहले 6 अक्षर होंगे, ~1मानकर कि केवल एक ही नाम है जो उदाहरण के लिए मेल खाता है:

C:\ABCDEF~1    - C:\ABCDEFG I AM DIRECTORY
C:\BCDEFG~1    - C:\BCDEFGHIJKL M Another Directory

यहाँ एकमात्र अपवाद है

C:\ABCDEF~1    - C:\ABCDEFG I AM DIRECTORY
C:\ABCDEF~2    - C:\ABCDEFGHI Directory as well

6
सच नहीं। कभी-कभी कम वर्णों का उपयोग किया जाता है, खासकर यदि आप एशियाई वर्णों का उपयोग कर रहे हैं, जैसे कि कोरियाई।
अरफांगियन

1
मैं यह जानने मान लें कि जो एक जो "असाधारण" मामले में सवाल की बात है - विशेष रूप से के रूप में "अपवाद" नियमित रूप से हर विंडोज 64 बिट स्थापना में होता है जहाँ आप जानते हैं की आवश्यकता हो सकती है जो एक के बाहर Program Filesऔर Program Files (x86)है PROGRA~1और जो एक है PROGRA~2पॉल का उत्तर उस मुद्दे को हल करता है।
या मैपर

2
मेरे पास इतनी सारी फाइलें हैं जो एक ही वर्ण से शुरू होती हैं कि उनमें से चार के बाद ( ...~4) हैशिंग की तरह दिखने वाली चीजों के साथ शुरू हुई, उदाहरण के लिए ABxxxx~1जहां x हेक्साडेसिमल था - जिसे पढ़ना बहुत आसान नहीं है।
23

2
क्या आप सुझाव दे रहे हैं कि उपयोगकर्ता लंबे नामों को देखकर तार्किक रूप से संक्षिप्त नामों का पता लगा सकता है? यह सच नहीं है। अगर मैं बनाता हूं ABCDEFGH-CAT, तो इसे संक्षिप्त नाम मिलता है ABCDEF~1। अगर मैं बनाता हूं, तो ABCDEFGH-DOGयह संक्षिप्त नाम हो जाता है ABCDEF~2। अगर मैं फिर हटाएँ ABCDEFGH-CAT, ABCDEFGH-DOG, अभी भी छोटा नाम है ABCDEF~2। सिर्फ लंबे नामों को देखकर बताने का कोई तरीका नहीं है।
स्कॉट

जैसा कि कहा गया है, छोटे नाम के लिए 6 पहले अक्षर नहीं हैं ~1नियम देखें कि विंडोज छोटे नामों को बनाने के लिए उपयोग करता है । और आप संक्षिप्त नाम को मैन्युअल रूप से भी सेट कर सकते हैं fsutil, इसलिए दोनों नामों का कोई संबंध नहीं हो सकता है। अकेले कठिन या नरम लिंक दें
फुल्विक

4

यदि आपके पास Powershell स्थापित है, तो मुझे वर्तमान निर्देशिका (या कुछ और) के लघु पथनाम को हल करने का बहुत आसान तरीका मिला।

बस वर्तमान dir में खुली शक्तियां

  • cmd विंडो में शक्तियां टाइप होती हैं

  • अगर आपके पास gui में फ़ोल्डर खुला है, तो आप सीधे फ़ोल्डर के एड्रेस बार में cmd.exe या powerhell.exe टाइप कर सकते हैं।

फिर आज्ञा दीजिए

(New-Object -ComObject Scripting.FileSystemObject).GetFolder(".").ShortPath

जानकारी की उत्पत्ति: [ https://gallery.technet.microsoft.com/scriptcenter/Get-ShortName-90a49303]



0

वैकल्पिक रूप से, आप PathCopyCopy नामक इस भयानक छोटे टूल का उपयोग कर सकते हैं

कुछ क्लिकों में, आप संदर्भ मेनू से शाब्दिक रूप से किसी भी फ़ोल्डर का लंबा और छोटा रास्ता प्राप्त कर सकते हैं, जैसे:

डेस्टिनेशन फोल्डर में राइट क्लिक करें => पाथ कॉपी => शॉर्ट पाथ।

किया हुआ। यह आपके क्लिपबोर्ड पर कॉपी हो जाएगा।

पूर्वावलोकन


0

मैंने npm installबॉयलरप्लेट पर चलाकर नोड मॉड्यूल स्थापित किया है । उन फ़ोल्डरों को हटाने की कोशिश करते समय, विंडोज़ हमें उन्हें हटाने की अनुमति नहीं देती है क्योंकि पथ को संभालने में सक्षम होने के लिए बहुत लंबा है।

कुछ उथले अनुसंधान के बाद, मैंने सोचा कि फ़ोल्डर को रूट से लीफ में बदलने के लिए कोड स्निपेट का अपना टुकड़ा सही होगा ताकि यह इस प्रयास के लिए किसी भी उल्लंघन के अपवाद को भी फेंक दे।

इससे मेरा काम बनता है। निम्नलिखित सी # परियोजना के लिए कोड है।

    public static int directoryCounterIndex = 0;
    public static void Main(string[] args)
    {
        string dirPath = @"D:\Studies\MeanStack\a\nodem";
        RenameDirectories(dirPath);
    }

    private static void RenameDirectories(string dirPath)
    {
        directoryCounterIndex += 1;
        var newPath = Path.GetDirectoryName(dirPath) + Path.DirectorySeparatorChar + directoryCounterIndex.ToString();
        Directory.Move(dirPath, newPath);
        var subDirectories = Directory.GetDirectories(newPath);
        foreach (var subDirectory in subDirectories)
        {
            RenameDirectories(subDirectory);
        }
    }

3
कृपया प्रश्न को फिर से ध्यान से पढ़ें। आपका उत्तर मूल प्रश्न का उत्तर नहीं देता है
DavidPostill

0
C:\Users\abcd>subst z: "c:\Program Files (x86)\Microsoft Office365 Tools\Microsoft Visual Studio 14.0"

C:\Users\abcd>subst
Z:\: => C:\Program Files (x86)\Microsoft Office365 Tools\Microsoft Visual Studio 14.0"

यह सबसे आसान तरीका है जिसका मैंने रिक्त स्थान के साथ फ़ाइलों से निपटने के दौरान उपयोग किया है और यह फ़ाइल एक्सप्लोरर से सुलभ है सभी एक्सेस एक्सेस विशेषाधिकार भी हैं।


-2

बस के साथ रिक्त स्थान बदलें

%20

यह जिस तरह से चीजें "अनुवादित" हैं, और रिक्त स्थान% 20 में जाते हैं।

यदि आपको वास्तव में बहुत कुछ चाहिए, तो बस अपना ब्राउज़र खोलें और कुछ टाइप करें

test ";($#< and find the word test, and see that the space is %20 and so on...

मुझे नहीं लगता कि तुम सही हो। यह एक सकारात्मक परिणाम नहीं देता है:if exist C:\Program%20Files\ (echo exists)
kayleeFrye_onDeck 20

3
आप कुछ अलग तरह की बात कर रहे हैं। मुख्य बिंदु यह है कि निर्देशिका और फ़ाइल नाम को 8 वर्णों में काट दिया जाता है। ब्राउज़र का इससे कोई लेना-देना नहीं है।
दाविद फेरेंस्की रागोजान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.