2016-03-05 12 views
19

मैं पथ के नीचे से फ़ाइल नाम निकालना चाहते हैं से फ़ाइल नाम निकालें:एक रास्ता

D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv

अब मैं फ़ाइल नाम प्राप्त करने के लिए इस कोड को लिखा था। जब तक फ़ोल्डर स्तर नहीं बदला गया तब तक यह ठीक काम कर रहा था। लेकिन यदि फ़ोल्डर स्तर बदल दिया गया है, तो इस कोड को फिर से लिखना होगा। मैं इसे अधिक लचीला बनाने का एक तरीका ढूंढ रहा हूं जैसे कि कोड हमेशा फ़ोल्डर स्तर के बावजूद फ़ाइल नाम निकाला जा सकता है।

($outputFile).split('\')[9].substring(0) 

उत्तर

37

यदि आप विस्तार सहित ठीक हैं तो यह वही करना चाहिए जो आप चाहते हैं।

$outputPath = "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv" 
$outputFile = Split-Path $outputPath -leaf 
1

आप जो परिणाम चाहते हैं उसे प्राप्त कर सकते हैं।

$file = "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv" 
$a = $file.Split("\") 
$index = $a.count - 1 
$a.GetValue($index) 

तो आप का उपयोग करें "रातों-ChildItem" "पूरा नाम", आप भी "नाम" का उपयोग सिर्फ फ़ाइल का नाम प्राप्त करने के लिए कर सकता है पाने के लिए।

+3

सीधे शब्दों में सूचकांक '-1' उपयोग करें यदि आप सरणी दृष्टिकोण ले जा रहे हैं:' $ file.Split ("\") [- 1] 'जानकारी के लिए –

+0

धन्यवाद! – David

10

उपयोग नेट:

[System.IO.Path]::GetFileName("c:\foo.txt") रिटर्न foo.txt[System.IO.Path]::GetFileNameWithoutExtension("c:\foo.txt") रिटर्न foo

0

$ (स्प्लिट-पथ "डी: \ सर्वर \ उपयोगकर्ता \ कस्टमर \ विदेश मंत्रालय \ Data \ \ फ़ाइलें में \ \ CUST_MEAFile.csv को सुधार" -leaf)

0

मिल- में basename का उपयोग करना ChildItem फ़ाइल का नाम प्रदर्शित करता है और नाम का उपयोग एक्सटेंशन के साथ फ़ाइल नाम प्रदर्शित करता है।

$filepath = Get-ChildItem "E:\Test\Basic-English-Grammar-1.pdf" 

$filepath.BaseName 

Basic-English-Grammar-1 

$filepath.Name 

Basic-English-Grammar-1.pdf 
संबंधित मुद्दे