एक पथ से फ़ाइल नाम निकालें


83

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

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

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

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

जवाबों:


164

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

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

6
यह एक बेहतरीन जवाब है। यह समस्या को सबसे "बिल्ट-इन" तरीके से हल करता है। हालाँकि, मेरी जरूरतों के लिए, मुझे विस्तार और आधार फ़ाइल नाम के साथ फ़ाइल नाम की आवश्यकता थी, इसलिए मैंने @ angularsen के उत्तर का उपयोग किया। एक और पैरामीटर है, -leafbase, लेकिन यह केवल PowerShell Core 6+ पर समर्थित है।
जेमी

62

उपयोग :

[System.IO.Path]::GetFileName("c:\foo.txt")लौटता है foo.txt[System.IO.Path]::GetFileNameWithoutExtension("c:\foo.txt")रिटर्नfoo


16

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

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

$filepath.BaseName

Basic-English-Grammar-1

$filepath.Name

Basic-English-Grammar-1.pdf

4

आप इस तरह का परिणाम प्राप्त कर सकते हैं।

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

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


6
-1अगर आप एरे अप्रोच ले रहे हैं तो बस इंडेक्स का उपयोग करें :$file.Split("\")[-1]
अंसार विचर

यदि हम एक्सटेंशन को हटाना चाहते हैं तो हम क्या कर सकते हैं?
सौरदीप बनर्जी-एआईएस


3

बस उस उपयोग के ऊपर उत्तर को पूरा करने के लिए .Net

इस कोड में पथ को %1तर्क में संग्रहीत किया जाता है (जो रजिस्ट्री में उद्धरण के तहत लिखा गया है जो बच जाते हैं:) \"%1\"। इसे पुनः प्राप्त करने के लिए, हमें $arg(इनबिल्ट अर्ग) की आवश्यकता है। उद्धरण मत भूलना $FilePath

# Get the File path:  
$FilePath = $args
Write-Host "FilePath: " $FilePath

# Get the complete file name:
$file_name_complete = [System.IO.Path]::GetFileName("$FilePath")
Write-Host "fileNameFull :" $file_name_complete

# Get File Name Without Extension:
$fileNameOnly = [System.IO.Path]::GetFileNameWithoutExtension("$FilePath")
Write-Host "fileNameOnly :" $fileNameOnly

# Get the Extension:
$fileExtensionOnly = [System.IO.Path]::GetExtension("$FilePath")
Write-Host "fileExtensionOnly :" $fileExtensionOnly


3

आप यह कोशिश कर सकते हैं:

[System.IO.FileInfo]$path = "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv"
# Returns name and extension
$path.Name
# Returns just name
$path.BaseName

2

वाइल्डकार्ड का उपयोग करके फ़ाइल प्राप्त करें और फ़ाइल नाम प्राप्त करें:

Resolve-Path "Package.1.0.191.*.zip" | Split-Path -leaf

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.