svn - निर्दिष्ट आदेश की निर्देशिका नाम में स्पेस के साथ PowerShell से CMD.EXE को कॉल कैसे करें



visualsvn-server (1)

मेरे पास मेरे एसवीएन रिपॉजिटरी की पुष्टि करने के लिए निम्नलिखित PowerShell स्क्रिप्ट हैं:

$SVNAdminDir = 'C:\Program Files (x86)\VisualSVN Server\bin';
$RepositoryDir = 'C:\My Repositories\App1';
$_cmd = "`"$SVNAdminDir`\svnadmin`" verify `"$RepositoryDir`"";
Write-Host $_cmd; # Copying this into the command prompt runs without an issue...
cmd.exe /c $_cmd; # It's when I try to execute the command from PS that I get the error.

लेकिन जब मैं इसे निष्पादित करने की कोशिश करता हूं, तो मुझे निम्न त्रुटि संदेश प्राप्त होता है:

cmd.exe : 'C:\Program' is not recognized as an internal or external command,
At line:5 char:12
+     cmd.exe <<<<  /c $_cmd;
    + CategoryInfo          : NotSpecified: ('C:\Program' is...ternal command,:String) [],     RemoteException
    + FullyQualifiedErrorId : NativeCommandError

operable program or batch file.

चूंकि मैं अनिवार्य रूप से $cmd = '"C:\Program Files (x86)\VisualSVN Server\bin\svnadmin" verify "C:\My Repositories\App1"'; सेट कर रहा हूँ $cmd = '"C:\Program Files (x86)\VisualSVN Server\bin\svnadmin" verify "C:\My Repositories\App1"'; एकल उद्धरण चिह्नों के अंदर दोहरे उद्धरण चिह्नों के साथ, मैं सी: \ प्रोग्राम फ़ाइलें (x86) \ ... में स्थान की उम्मीद कर रहा था सही ढंग से पारित होने के लिए।

मुझे संदेह है कि ऐसी स्ट्रिंग के साथ कुछ तुच्छ है जो मुझे याद आ रहा है ...


आपको इस तरह cmd.exe को कॉल करना होगा:

cmd.exe /c "`"$_cmd`""

आपके द्वारा cmd.exe को भेजे जाने वाले आदेशों को पूरी तरह से अपने उद्धरण में लिपटे जाने की ज़रूरत है, न कि उन रास्तों के साथ-साथ उन रास्तों को जो उन आज्ञाओं का हिस्सा हैं इसके साथ ऐसा करना होगा कि पावरशेल्ड स्ट्रिंग कैसे पार्स करता है और इसे सीएमडी.एक्सए को सचमुच उद्धरण देना होगा ताकि वह दो-उद्धरणों की सामग्री का अपना पार्सिंग सही ढंग से कर सके।

उदाहरण के लिए, यदि आप पहले से ही एक cmd.exe सत्र में थे और इस तरह एक चर सेट करें:

C:\>set _cmd="C:\Program Files (x86)\VisualSVN Server\bin\svnadmin" verify "C:\My Repositories\App1"

इसके बाद कमांडलाइन पर बस उस चर का विस्तार होगा:

C:\>%_cmd%

हालांकि, यदि इसे एक नए cmd.exe सत्र में cmd.exe , तो उसे अतिरिक्त उद्धरणों की आवश्यकता होगी:

C:\>cmd.exe /c "%_cmd%"




visualsvn-server