पॉवर्सशेल वैरिएबल वाले वैरिएबल मान पर पुनर्निर्देशित करता है


1

क्या एक चर का उपयोग करने का एक तरीका है जिसके मूल्य में कमांड-लाइन पुनर्निर्देशन में फ़ाइल नाम स्ट्रिंग के रूप में बृहदान्त्र वर्ण होता है? पावेरशेल हमेशा बृहदान्त्र को ड्राइव सेपरेटर के रूप में मानता है, बच पात्रों की परवाह किए बिना। यह उत्पादन फ़ाइल नाम में निहित वर्ण शाब्दिक के रूप में बृहदान्त्र का उपयोग करके कैसे किया जा सकता है?

उदाहरण:

$colonVar = "Colon:string"
echo "fileContents" > "file$colonVar.txt"

पैदावार

ड्राइव नहीं मिल रहा। 'FileColon' नाम की ड्राइव मौजूद नहीं है।

क्या हम इसके बजाय "fileContents" को "fileColon: string.txt" नामक फ़ाइल में लिख सकते हैं?

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

(Powershell 2.0 का उपयोग करके)

जवाबों:


1

विंडोज में आपके पास नाम के साथ एक फाइल नहीं हो सकती है, इसलिए यह PowerShell नहीं है जो इसे रोक रहा है, यह फ़ाइल सिस्टम है। बृहदान्त्र को पट्टी करें, और / या इसे एक ऐसे चरित्र के साथ बदलें जो फ़ाइल नाम के लिए मान्य है।

से https://support.microsoft.com/en-us/kb/177506 :

A filename cannot contain any of the following characters: 
\ / : * ? " < > | 

दूसरी ओर, यह चारों ओर काम किया जा सकता है ... अच्छी तरह से, कुछ: stackoverflow.com/questions/10386344/...
Gombai Sándor

1
धन्यवाद। मैंने त्रुटि संदेश से माना है कि सिस्टमशेल, सिस्टम नहीं, सफल होने से कमांड को रोक रहा था, लेकिन यह समझ में आता है कि यह ओएस स्तर पर अवरुद्ध है क्योंकि ओएस इसे वैसे भी अनुमति नहीं देता है। रिकॉर्ड के लिए, पॉवरशेल इनलाइन टेक्स्ट रिप्लेसमेंट का समर्थन करता है, उदा। echo "fileContents" > "file$colonVar.txt".replace(":","_") या $colonVar = "Colon:string".replace(":","_")
taz
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.