ফাইল-নাম পার্স করতে এবং তাদের নাম পরিবর্তন করতে আমি কীভাবে পাওয়ারশেল ব্যবহার করতে পারি?


5

আমি লগফিল বিশ্লেষণ করে একটি প্রকল্প পেয়েছি। কেউ, তাদের অসীম জ্ঞানে, লগ-ফাইলে নাম দিচ্ছেন এমএম-ডিডি-ওয়াইওয়াই-এইচএইচ-এমএম.লগ (উদাহরণস্বরূপ, ৩১ অক্টোবর, ২০১২ সন্ধ্যা :00:৩০ এর জন্য 10-31-2012-18-00.LG)।

আমার ব্যবসায়ের প্রথম ক্রমটি হল ওয়াইওয়াইওয়াইএমএমডিডিএইচএমএমএলজি নামে বিদ্যমান লগগুলির অনুলিপি করে (যেমন, উদাহরণস্বরূপ, 20121031_1800.LOG) এর সাথে কাজ করার জন্য উল্লেখযোগ্যভাবে আরও যুক্তিসঙ্গত কিছু তৈরি করা এবং এই কাজটি সম্পাদন করতে অবশ্যই পাওয়ারশেল ব্যবহার করতে হবে।

আমি এখানে যেখানে রয়েছি তাই এখানে:

$orgPath = "d:\testOrg\"
$newPath = "d:\testNew\"
$delim   = "-" ;

function copyFile {
"$($orgPath) copying Files to $($newPath)" 
Get-ChildItem $orgPath | `
foreach { 
  $nameArray = $_.Split($delim)
  $newName = Write-Output $nameArray[2]+$nameArray[0]+$nameArray[1]+"_"+$nameArray[3]+$nameArray[4] 
  $targetFile = $newPath + $_.FullName.SubString($orgPath.Length) 
  New-Item -ItemType File -Path $targetFile -Force  
  Copy-Item $_.FullName -destination $targetFile
  write-host $_.DirectoryName $_.newName  
  "File Copied"
}

এবং আমি একটি ত্রুটি পেতে থাকি

+ CategoryInfo          : InvalidOperation: (Split:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound

আমি জানি আমি এখানে বেশ বোকা কিছু মিস করছি ... আমি এটি দেখতে পাচ্ছি না। সেখানে চোখের আর কোনও সেট যা আমাকে সাহায্য করতে পারে?

উত্তর:


3

গেট-চাইল্ড আইটেম কেবল ফাইলের নাম নয়, ফাইল সিস্টেম সামগ্রীর একটি তালিকা ফেরত দেয়।

-Nameকেবল ফাইলের নাম ফিরিয়ে আনতে আপনি বিকল্পটি ব্যবহার করতে পারেন ।

আউটপুট প্রকারটি সেমিডলেট প্রস্থান করে এমন বস্তুর প্রকার।

সিস্টেম.অজেক্ট - গেট-চাইল্ড আইটেম যে ধরণের অবজেক্ট দেয় তা সরবরাহকারীর ড্রাইভের পথে থাকা বস্তুগুলির দ্বারা নির্ধারিত হয়।

System.String - আপনি যদি নাম প্যারামিটার ব্যবহার করেন , গেট-চাইল্ড আইটেম স্ট্রিং হিসাবে বস্তুর নামগুলি প্রদান করে।

এটার মতো কিছু:

$orgPath = "d:\testOrg\"
$delim = "-"

Get-ChildItem $orgPath -Name | `
foreach { 
  $nameArray = $_.Split($delim)
  $newName = $nameArray[2]+$nameArray[0]+$nameArray[1]+"_"+$nameArray[3]+$nameArray[4] 
  Write-Output $newName
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.