दिलचस्प पोस्ट
Gradle चेतावनी: variant.getOutputFile () और variant.setOutputFile () को बहिष्कृत कर दिया गया है गिट: ट्रैक किए गए फ़ाइलों को अनदेखा करें क्या GWT का उपयोग करके एमवीपी में ऑब्जर्वर पैटर्न का उपयोग करने का एक अनुशंसित तरीका है? jQuery के साथ addClass / removeClass एनिमेटिंग ब्राउज़र टैब / विंडो के बीच जावास्क्रिप्ट संचार किसी लिंक सूची में एक पाश को कैसे पता लगा सकता है? Javascript-function में getElementsByClassName का उपयोग कैसे करें? SSL की बात क्या है अगर 2 साल की उम्र में 2 डीटीआईटीपीएस पर सभी कॉल डिक्रिप्ट कर सकते हैं? जावा का कलेक्शन। शफ़ल क्या कर रहा है? string.charAt (x) या स्ट्रिंग ? एंड्रॉइड एप्लिकेशन में फेसबुक एसडीके से ईमेल आईडी कैसे प्राप्त करें? सबसे अच्छा क्रॉस प्लेटफॉर्म (पोर्टेबल) मनमाना परिशुद्धता गणित पुस्तकालय नवनिर्मित ऑब्जेक्ट पर चेन विधि कैसे करें? एंड्रॉइड – बटन के लिए सीमा वेब से एक कुंजी को पढ़ना। ConfigManager का उपयोग कर कॉन्फ़िगर करें

'प्रिन्ट प्रिंट' विंडो% PATH% variable – ';' पर कैसे विभाजित है सीएमडी खोल में

मैं विंडोज़ सीएमडी प्रॉम्प्ट में अपने %PATH% को मुद्रित करने के लिए साधारण एक लाइनर को चलाने के लिए चाहता हूं, प्रति पंक्ति एक प्रविष्टि।

मैंने इसे करने की कोशिश की: के for /f "delims=;" %a in ("%path%") do echo %a for /f "delims=;" %a in ("%path%") do echo %a लेकिन यह केवल पहली प्रविष्टि प्रिंट करता है:

 Z:\>for /f "delims=;" %a in ("%path%") do echo %a Z:\>echo c:\python25\. c:\python25\. 

इसके अलावा, जैसा कि आप ऊपर दिए गए आउटपुट से देख सकते हैं, यह भी echo %a आदेश और साथ ही आउटपुट प्रिंट भी कर रहा है। क्या इसे रोकने का कोई तरीका है?

अगर मैं एक समान आदेश की कोशिश करता हूं, तो मुझे सभी प्रविष्टियां मिलती हैं, लेकिन फिर भी परिणामों को स्पैमिंग आउटपुट में echo %a मिलता है। मुझे समझ नहीं आ रहा है कि निम्नलिखित सभी प्रविष्टियों को क्यों प्रिंट किया जाता है, लेकिन %PATH% पर मेरा प्रयास नहीं है। मुझे संदेह है कि मैं /F स्विच नहीं समझता

 Z:\>for %a in (1 2 3) do echo %a Z:\>echo 1 1 Z:\>echo 2 2 Z:\>echo 3 3 

Solutions Collecting From Web of "'प्रिन्ट प्रिंट' विंडो% PATH% variable – ';' पर कैसे विभाजित है सीएमडी खोल में"

इसका सरल तरीका उपयोग करना है

 for %a in ("%path:;=";"%") do @echo %~a 

यह बिना सभी के लिए काम करता है ; रास्ते में और बिना " एक ही तत्व के आसपास
पथ = सी के साथ परीक्षण किया गया: \ qt \ 4.6.3 \ bin; C: \ Program Files; C: \ दस्तावेज़ और सेटिंग

लेकिन एक "हमेशा" समाधान थोड़ा जटिल है
संपादित करें: अब एक काम कर रहे संस्करण

 @echo off setlocal DisableDelayedExpansion set "var=foo & bar;baz<>gak;"semi;colons;^&embedded";foo again!;throw (in) some (parentheses);"unmatched ;-)";(too" set "var=%var:"=""%" set "var=%var:^=^^%" set "var=%var:&=^&%" set "var=%var:|=^|%" set "var=%var:<=^<%" set "var=%var:>=^>%" set "var=%var:;=^;^;%" rem ** This is the key line, the missing quote is intended set var=%var:""="% set "var=%var:"=""%" set "var=%var:;;="";""%" set "var=%var:^;^;=;%" set "var=%var:""="%" set "var=%var:"=""%" set "var=%var:"";""=";"%" set "var=%var:"""="%" setlocal EnableDelayedExpansion for %%a in ("!var!") do ( endlocal echo %%~a setlocal EnableDelayedExpansion ) 

मैं वहां क्या करूँ?
मैं मुख्य समस्या को हल करने का प्रयास करता हूं, कि उद्धरण चिह्नों के अंदर अर्धविरामों को अनदेखा करना चाहिए और केवल सामान्य अर्धविरामों को ";"

मैं बैच इंटरप्रेटर को स्वयं के लिए इसका समाधान करने के लिए उपयोग करता हूं
पहले मुझे स्ट्रिंग सुरक्षित करना है , सभी विशेष वर्णों से बचने के लिए।
तब सभी ';' ^;^; साथ प्रतिस्थापित कर रहे हैं ^;^; और फिर चाल set var=%var:"=""%" (लापता उद्धरण कुंजी है!) में शुरू होता है
यह एक तरह से फैलता है कि बच निकलने वाले सभी पात्रों को अपने पलायन कैरेट खो देते हैं
var=foo & bar;;baz<>gak;;"semi^;^;colons^;^;^&embedded";;foo again!;;
लेकिन केवल उद्धरण चिह्नों के बाहर, इसलिए अब उद्धरणों के बाहर अर्धविरामों के बीच एक अंतर है ;; और ^;^;
चाबी

PATH वातावरण चर को छूने के लिए एक साधारण एक लाइनर:

 ECHO.%PATH:;= & ECHO.% 

यदि आपका PATH ECHO.A & ECHO.B & ECHO.C A;B;C ऊपर स्ट्रिंग प्रतिस्थापन के बराबर होता A;B;C तो इसे ECHO.A & ECHO.B & ECHO.C बदल दिया जाएगा और इसे एक बार में सभी पर अमल करेगा। पूर्ण स्टॉप "ईसीएचओ चालू है" संदेश को प्रदर्शित होने से रोकता है।

मेरे पास जेब के चालाक "हमेशा" समाधान में मामूली सुधार है I वर्तमान में जेब के समाधान में निम्न मुद्दे हैं:

  1. अगर प्रमुख पथ उद्धरण चिह्नों में संलग्न है, तो पहले आउटपुट "" से शुरू होता है
  2. यदि ट्रेलिंग पथ उद्धरण चिह्नों में संलग्न है, तो अंतिम आउटपुट "" के साथ समाप्त होता है
  3. अगर कोई पथ हानिपूर्ण लेकिन गैर-कार्यात्मक लगातार "" में है, तो आउटपुट को संरक्षित करता है ""
  4. यदि var लगातार होते हैं ;; सीमांकक तो आउटपुट ईसीओ बंद है

यह समाधान मामूली मुद्दों को हल करता है, प्लस यह 2 कम प्रतिस्थापन का उपयोग करता है इसके अलावा मैंने लूप के भीतर अनावश्यक दोहराया सक्षम / निष्क्रिय विलंब विस्तार को समाप्त कर दिया। (2011-10-30 को सरलीकृत तर्क को सरलीकृत करना)

 @echo off setlocal DisableDelayedExpansion set "var=%var:"=""%" set "var=%var:^=^^%" set "var=%var:&=^&%" set "var=%var:|=^|%" set "var=%var:<=^<%" set "var=%var:>=^>%" set "var=%var:;=^;^;%" set var=%var:""="% set "var=%var:"=""Q%" set "var=%var:;;="S"S%" set "var=%var:^;^;=;%" set "var=%var:""="%" setlocal EnableDelayedExpansion set "var=!var:"Q=!" for %%a in ("!var:"S"S=";"!") do ( if "!!"=="" endlocal if %%a neq "" echo %%~a ) 

यदि आप निरंतर परिणामस्वरूप प्रत्येक खाली पथ के लिए एक रिक्त रेखा देखना चाहते हैं ;; सीमांकक, फिर फॉर लूप की अंतिम पंक्ति को echo(%%~a

या शायद यह खाली पथ को प्रदर्शित करने के लिए अधिक स्पष्ट होगा:
if %%a=="" (echo "") else echo %%~a

विभिन्न खाली पथ फिक्सेस जेब के सरल समाधान के लिए भी काम करता है।

अद्यतनः ये एक साधारण एक-लाइनर है जो जेआरपीएल.बीएटी का उपयोग कर रही है

आप अपने JREPL.BAT नियमित अभिव्यक्ति पाठ प्रसंस्करण उपयोगिता को एक सरल, बहुत मजबूत समाधान प्राप्त करने के लिए उपयोग कर सकते हैं। JREPL.BAT शुद्ध स्क्रिप्ट (हाइब्रिड जेस्क्रिप्ट / बैच) है जो किसी भी विंडोज मशीन पर मूल रूप से एक्सपी से चलती है।

 jrepl "([^;\q]+|\q.*?(\q|$))+" $0 /x /jmatch /s path 

स्टीफन क्वान के बहुत ही चतुर एक-लाइनर समाधान में एक अपडेट: मुझे जो समस्या आई थी, वह यह थी कि अनुक्रमिक अर्ध-बृहदान्त्र – (और शायद दो लगातार सेमी-बृहदान्त्र, अर्थात खाली पथ तत्व) संदेश को "ईसीओ ऑन ऑन" दिखाई देगा। मैंने इसे दूसरे ईसीओ के बयान के तुरंत बाद एक अवधि डालने का प्रयास किया (जो ईसीओ को दबाने के लिए वाक्यविन्यास है / बंद संदेश)। हालांकि, इसके परिणामस्वरूप एक अतिरिक्त खाली पंक्ति होगी:

 ECHO %PATH:;= & ECHO.% 

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

इसका इस्तेमाल करने के लिए स्वतंत्र महसूस करें।

इसे एपथ कहा जाता है, और फ़ाइल inzi.com में है। यह आसान उपयोग के लिए एक EXE के रूप में संकलित किया गया है (vbsedit का उपयोग करके): यहां

आप वहां एक्सले डाउनलोड कर सकते हैं यदि आप इसे वीबीएस स्क्रिप्ट के रूप में चाहते हैं, तो यहां स्क्रिप्ट का स्रोत कोड है

  scriptname = Wscript.ScriptName 'objFSO.GetFileName(WScript.FullName) Function BubbleSort(arrData,strSort) 'borrowed from here: http://vbscripter.blogspot.com/2008/03/q-how-do-i-sort-data-in-array.html 'Input: arrData = Array of data. Text or numbers. 'Input: strSort = Sort direction (ASC or ascending or DESC for descending) 'Output: Array 'Notes: Text comparison is CASE SENSITIVE ' strSort is checked for a match to ASC or DESC or else it defaults to Asc strSort = Trim(UCase(strSort)) If Not strSort = "ASC" And Not strSort = "DESC" Then strSort = "ASC" End If For i = LBound(arrData) to UBound(arrData) For j = LBound(arrData) to UBound(arrData) If j <> UBound(arrData) Then If strSort = "ASC" Then If UCase(arrData(j)) > UCase(arrData(j + 1)) Then TempValue = arrData(j + 1) arrData(j + 1) = arrData(j) arrData(j) = TempValue End If End If If strSort = "DESC" Then If UCase(arrData(j)) < UCase(arrData(j + 1)) Then TempValue = arrData(j + 1) arrData(j + 1) = arrData(j) arrData(j) = TempValue End If End If End If Next Next BubbleSort = arrData End Function If Wscript.Arguments.Count>0 Then Set args = Wscript.Arguments bInLines = False bInAlphabetical = False bReverseSort = False bShowHelp = False For Each arg In args Select Case arg Case "-l" bInLines = True Case "-a" bInAlphabetical = True Case "-r" bReverseSort = True Case Else bShowHelp=True End Select Next If bInLines = False Then bShowHelp=True End if If bShowHelp Then sTxt = sTxt + "" & vbCrLf sTxt = sTxt + scriptname & " Displays the system path in optionally friendly formats." & vbCrLf sTxt = sTxt + "ePath is helpful when viewing the system path and easily identifying folders therein." & vbCrLf sTxt = sTxt + "" & vbCrLf sTxt = sTxt + "EPATH [-l] [-a] [-r]" & vbCrLf sTxt = sTxt + "" & vbCrLf sTxt = sTxt + "Switches:" & vbCrLf sTxt = sTxt + vbTab + "[-l]" + vbtab + "Show the path broken out in lines" & vbCrLf sTxt = sTxt + vbtab + "[-a]" + vbTab + "Sort the path broken out in lines sorted alphabetically" & vbCrLf sTxt = sTxt + vbtab + "[-r]" + vbTab + "Reverse the alphabetic sort [asc default] (ignored without -a)" & vbCrLf sTxt = sTxt + "" & vbCrLf sTxt = sTxt + vbTab + "Examples:" & vbCrLf sTxt = sTxt + vbTab + vbTab + scriptname & vbTab & "(Show %PATH% normally)" & vbCrLf sTxt = sTxt + vbTab + vbTab + scriptname & " -l" & vbCrLf sTxt = sTxt + vbTab + vbTab + scriptname & " -l -a" & vbCrLf sTxt = sTxt + vbTab + vbTab + scriptname & " -l -a -r" & vbCrLf sTxt = sTxt + vbTab + vbTab + scriptname & " -? Display help (what you are seeing now)" & vbCrLf sTxt = sTxt + "" & vbCrLf sTxt = sTxt + "More info or questions at http://inzi.com" & vbCrLf Wscript.Echo sTxt WScript.Quit Else Set wshShell = CreateObject( "WScript.Shell" ) sPath = wshShell.ExpandEnvironmentStrings( "%PATH%" ) thePath = Split(sPath,";") If bInAlphabetical Then If bReverseSort Then sDirection = "DESC" End If thePath = BubbleSort(thePath, sDirection) End if For Each item In thePath WScript.Echo item Next Set wshShell = Nothing End if Else 'Nothing, echo the path. Set wshShell = CreateObject( "WScript.Shell" ) WScript.Echo wshShell.ExpandEnvironmentStrings( "%PATH%" ) Set wshShell = Nothing End If 

स्टीफन क्वाइन का उत्तर छोटा और बेहतर है, लेकिन यहां एक पायथन समाधान है:

 python -c "import os; print os.environ['PATH'].replace(';', '\n');" 

टर्निंग ; सेमीकॉलन \n नई लाइनों में

@ROMANIA_engineer ने एक टिप्पणी में एक PowerShell समाधान प्रस्तावित किया है चूंकि सवाल सीएमडी खोल में काम करने वाले कमांड के लिए पूछता है, इसलिए ओपी के वांछित वातावरण से उस सुरुचिपूर्ण कोड का उपयोग करने का एक तरीका है:

powershell -Command ($env:Path).split(';')

इसे अभी भी अधिक पठनीय बनाने के लिए, आप सॉर्टिंग जोड़ सकते हैं:

powershell -Command ($env:Path).split(';') | sort

क्रेडिट: https://stackoverflow.com/a/34920014/704808