উত্তর:
কোনও ফাইলের সম্পূর্ণ সামগ্রী পেতে:
$content = [IO.File]::ReadAllText(".\test.txt")
লাইনের সংখ্যা:
([IO.File]::ReadAllLines(".\test.txt")).length
অথবা
(gc .\test.ps1).length
ফাঁকা লাইনটি অনুসরণ করার জন্য হ্যাকিশের বাছাই করুন:
[io.file]::ReadAllText(".\desktop\git-python\test.ps1").split("`n").count
\r\n
গণনা করা হবে।
Invoke-WebRequest
?
পার্শ্ব নোটে, পাওয়ারশেল Get-Content
3.0.০ এ আপনি নতুন কাঁচা সুইচ দিয়ে সেমিডলেট ব্যবহার করতে পারেন :
$text = Get-Content .\file.txt -Raw
Get-Content
করেছে, তবে এটি 3.0 এর আগেই পায়নি -Raw
। তা না হলে এটি লাইনের অ্যারে হিসাবে সঞ্চিত হয়।
-Raw
প্যারামিটারটি স্থানীয় কোনও কিছুর দ্বারা প্রয়োগ করা হয়নি help
(এখানে বিস্তারিত ব্যাখ্যা দেখুন)
$text = Get-Content $filePath | Out-String
IO.File.ReadAllText
একটি আপেক্ষিক পাথ দিয়ে আমার জন্য কাজ করে নি, এটা ফাইল জন্য দেখায় %USERPROFILE%\$filePath
পরিবর্তে বর্তমান ডিরেক্টরীর (যখন অন্তত PowerShell ISE থেকে চলমান):
$text = [IO.File]::ReadAllText($filePath)
$text = Get-Content $filePath -Raw
[IO.File]::ReadAllText((Resolve-Path $filePath))
আমি যে ফাইলটি পছন্দ করি সেগুলি পড়ার আরও একটি পদ্ধতিকে বিভিন্নভাবে ভেরিয়েবল নোটেশন বা ভেরিয়েবল সিনট্যাক্স হিসাবে উল্লেখ করা হয় এবং ডলারের চিহ্নের আগে কোঁকড়ানো ধনুর্বন্ধনীগুলির মধ্যে কেবল একটি ফাইলস্পেকের সাথে বুদ্ধিটি অন্তর্ভুক্ত থাকে:
$content = ${C:file.txt}
এই স্বরলিপিটি কোনও এল-মান বা একটি আর-মান হিসাবে ব্যবহার করা যেতে পারে ; সুতরাং, আপনি ঠিক সহজেই এই জাতীয় কিছু দিয়ে একটি ফাইল লিখতে পারেন:
${D:\path\to\file.txt} = $content
আর একটি সহজ ব্যবহার আপনি হ'ল অস্থায়ী ফাইল ছাড়াই এবং উপ-এক্সপ্রেশন ছাড়াই কোনও জায়গায় জায়গায় কোনও ফাইল পরিবর্তন করতে পারেন, উদাহরণস্বরূপ:
${C:file.txt} = ${C:file.txt} | select -skip 1
আমি প্রাথমিকভাবে এই স্বরলিপি দ্বারা মুগ্ধ হয়েছি কারণ এটি সম্পর্কে কিছু খুঁজে পাওয়া খুব কঠিন ছিল! এমনকি পাওয়ারশেল ২.০ স্পেসিফিকেশনটিতে এটি একবার ব্যবহার করে কেবল একটি লাইন দেখানো উল্লেখ করেছে - তবে কোনও ব্যাখ্যা বা ব্যবহারের বিশদ নেই। পরবর্তী সময়ে আমি পাওয়ারশেল ভেরিয়েবলগুলিতে এই ব্লগ এন্ট্রিটি পেয়েছি যা কিছু ভাল অন্তর্দৃষ্টি দেয়।
এটি ব্যবহারের জন্য একটি চূড়ান্ত নোট: আপনাকে অবশ্যই একটি ড্রাইভের উপাধি ব্যবহার করতে হবে, ${drive:filespec}
যেমন আমি উপরের সমস্ত উদাহরণগুলিতে করেছি। ড্রাইভ (উদাহরণস্বরূপ ${file.txt}
) ছাড়া এটি কাজ করে না। এই ড্রাইভে ফাইলস্পেকে কোনও বিধিনিষেধ নেই: এটি পরম বা আপেক্ষিক হতে পারে।
গেট-কনটেন্ট ডেটা ধরে এবং এটিকে অ্যারেতে ফেলে রেখেছে, রেখায় করে রেখেছে। ধরে নিই যে আপনার তালিকাভুক্ত করা ছাড়া অন্য কোনও বিশেষ প্রয়োজনীয়তা নেই, আপনি কেবল আপনার বিষয়বস্তুকে একটি পরিবর্তনশীল হিসাবে সংরক্ষণ করতে পারবেন?
$file = Get-Content c:\file\whatever.txt
সবে চালানো $file
পুরো বিষয়বস্তু ফিরে আসবে। তারপরে আপনি কেবলমাত্র করতে পারেন $file.Count
(কারণ অ্যারেতে ইতিমধ্যে একটি গণনা পদ্ধতি অন্তর্নির্মিত রয়েছে) মোট # লাইন পেতে।
আশাকরি এটা সাহায্য করবে! আমি কোনও স্ক্রিপ্টিং উইজ নই, তবে উপরের স্টাফের চেয়ে এটি আমার কাছে সহজ মনে হয়েছিল।
$content = [IO.File]::ReadAllText(".\test.txt")
হিসাবে একই জিনিস প্রদর্শিত হবে$content = (gc ".\test.txt" | out-string)
। যেহেতু দুজনের মধ্যে দ্বিতীয়টি খাটো, সেটাই আমার পছন্দ। দুর্ভাগ্যক্রমে, মোট রেখার সংখ্যা গণনা করার জন্য আপনি যে পদ্ধতি সরবরাহ করেছেন সেগুলির মধ্যে একটিও ফাঁকা রেখাগুলিকে বিবেচনায় নেবে না। অন্য কোন ধারণা?