كيفية نسخ أو نقل الملفات في بوويرشيل

15 مايو 2021 1201 الآراء

هل تتساءل عن كيفية نسخ الملفات أو نقلها باستخدام PowerShell؟





كيفية إعادة تثبيت نظام التشغيل windows 10 لتطبيق البريد

تعلمك منطقة S هذه كيفية استخدام PowerShell لنسخ ملف باستخدام Get-ChildItem و نسخ العنصر كمدليتس. يغطي الدليل ثلاث طرق لنسخ الملفات باستخدام PowerShell.



أخيرًا ، ستتعلم أيضًا كيفية نقل الملفات باستخدام PowerShell. بخلاف نسخ ملف ، عند نقل ملف ، يتم حذف الملف من مصدره.

تصفح مواضيع المنشور



كيفية نسخ ملف واحد باستخدام PowerShell

كيفية نسخ ملف واحد باستخدام PowerShell

في هذا القسم الأول ، سأعلمك كيفية نسخ ملف واحد باستخدام PowerShell. سواء كنت تنسخ ملفًا واحدًا أو جميع الملفات في مجلد - يتكون أمر PowerShell من جزأين.



في الجزء الأول من الأمر ، يمكنك استخدام ملحق Get-ChildItem Cmdlet إلى قائمة الملف. ثم أنت يضخ ناتج Get-ChildItem الأمر إلى نسخ العنصر كمدليت.

كيفية سرد ملف مع Get-ChildItem

كما ذكرت في مقدمة هذا القسم ، قبل نسخ ملف باستخدام PowerShell ، عليك أولاً قائمة انه مع Get-ChildItem .



في هذا المثال ، أرغب في نسخ الملف المسمى Byte Count Tool ، من مجلده الحالي إلى D: G-Drive Work Tools Products Portal 2.



كيفية نسخ ملف واحد باستخدام PowerShell

لسرد الملف النصي ، سأقوم بتشغيل الأمر أدناه:

Get-ChildItem 'D:G-DriveWork ToolsProducts PortalByte Count Tool.txt'

أسرع طريقة لتشغيل الأمر هي وضع موجه PowerShell جنبًا إلى جنب مع المجلد الذي يحتوي على الملف. ثم أدخل Get-ChildItem في موجه PowerShell - اضغط على مفتاح شريط المسافة لإضافة مسافة.

بعد ذلك ، اسحب الملف من المجلد إلى موجه PowerShell.

أخيرًا ، لسرد خصائص الملف ، مع فتح موجه PowerShell ، اضغط على مفتاح الإدخال.

كيفية توصيل إخراج Get-ChildItem ل نسخ العنصر

بمجرد إدراج خصائص الملف الذي تريد نسخه ، قم بتوجيهه إلى ملف نسخ العنصر . ثم ، في نسخ العنصر جزء من الأمر ، حدد المجلد الذي تريد نسخ الملف إليه.

إليك أمر PowerShell لنسخ ملف:

Get-ChildItem 'D:G-DriveWork ToolsProducts PortalByte Count Tool.txt' | Copy-Item -Destination 'D:G-DriveWork ToolsProducts Portal 2'
لقد أضفت علامات اقتباس حول مسار المجلد لأنه يحتوي على مسافات بينهما.

عند الضغط على إدخال ، سيتم تنفيذ الأمر - سيتم نسخ الملف إلى الوجهة المحددة

كيفية نسخ كافة أنواع الملفات في مجلد باستخدام PowerShell

كيفية نسخ كافة أنواع الملفات في مجلد باستخدام PowerShell

في القسم الأخير من هذا الدليل ، أوضحت لك كيفية نسخ ملف واحد باستخدام PowerShell. ومع ذلك ، قد تكون هناك مواقف تحتاج فيها إلى نسخ جميع أنواع الملفات في مجلد.

في هذا القسم ، ستتعلم كيفية نسخ جميع الملفات بامتداد ملف معين من مجلد إلى مجلد آخر. على سبيل المثال ، قد ترغب في نسخ جميع الملفات بملحق الملف .log من C: Windows إلى مجلد آخر.

تشبه هذه العملية نسخ ملف واحد ولكنها تتطلب خطوات إضافية. على وجه التحديد ، لنسخ أكثر من ملف باستخدام PowerShell ، يتعين علينا إنشاء برنامج نصي بسيط.

الجزء الأول من البرنامج النصي يتضمن استخدام الامتداد Get-ChildItem Cmdlet لسرد الملفات التي تريد نسخها. بعد ذلك ، في الجزء الثاني من البرنامج النصي ، ستستخدم الامتداد للجميع حلقة للتكرار من خلال قائمة الملفات.

أخيرًا ، داخل للجميع حلقة ، ستقوم بتضمين ملف نسخ العنصر Cmdlet لنسخ كل ملف من الملفات إلى وجهتك المطلوبة.

لتسهيل فهمك لبرنامج PowerShell النصي البسيط الذي نحن على وشك إنشائه ، سأقسم هذا القسم إلى قسمين فرعيين.

مخصص rom galaxy s7 edge

كيفية سرد كافة أنواع الملفات بامتداد Get-ChildItem

في هذا المثال ، أرغب في نسخ جميع الملفات ذات امتداد الملف .log من C: Windows إلى D: Log Files. ومع ذلك ، كما تم التلميح أعلاه ، فإن الخطوة الأولى هي استخدام ملف Get-ChildItem Cmdlet لسرد كافة الملفات ذات امتداد الملف .log.

مرة أخرى ، لتسهيل فهم الأمر النهائي ، دعنا نبدأ من الأساسيات. أولاً ، يتيح سرد جميع الملفات والمجلدات في المجلد المصدر - باستخدام الأمر أدناه:

Get-ChildItem C:Windows

يعرض الأمر الأخير كلاً من الملفات والمجلدات.

كيفية نسخ كافة أنواع الملفات في مجلد باستخدام PowerShell

ومع ذلك ، نريد استخدام PowerShell لنسخ الملفات ذات امتداد الملف .log فقط. لذلك ، سنضيف شيئًا آخر من الأوامر لعرض هذه الملفات بمفردها.

ألق نظرة أخرى على آخر لقطة شاشة. العمود الأخير يسمى الاسم. هذا هو اسم الملف أو المجلد. سوف نستخدم هذه المعلومات قريبا.

لتحقيق هذا الهدف ، سنقوم بتوجيه إخراج Get-ChildItem C: Windows إلى ملف أين الكائن يأمر. هذا هو الأمر الذي يقوم بهذه الحيلة.

Get-ChildItem C:Windows |  Where-Object  { $_.Name -like '*.log' } | Select-Object  FullName  
هل تتذكر أنني أخبرتك بتدوين عمود الاسم من نتيجة Get-ChildItem C: Windows؟ في PowerShell ، يمكنك استخدام $ _. المتغير التلقائي للكائنات المرجعية. في الأمر أعلاه ، طلبت من PowerShell عرض الكائنات التي تحمل اسمًا يتضمن '.log' فقط. أخيرًا ، قمت بتوصيل النتيجة إلى Select-Object Cmdlet وأخبرته بعرض ملف الاسم الكامل من الملف. ال الاسم الكامل يتضمن مسار الملف.

هنا نتيجة الأمر أعلاه. لقد أزلنا جميع المعلومات الأخرى - لدينا الآن الملفات التي نحتاج إلى نسخها فقط. لم ننتهي من هذا الجزء - قبل المتابعة إلى الجزء الأخير من إنشاء البرنامج النصي ، نحتاج إلى إضافة جزء آخر.

هذا الجزء هو لإضافة الأمر الأخير إلى متغير - سأقوم باستدعاء المتغير ملفات الدخول . هنا هو الأمر الذي يقوم بهذه المهمة.

$logfiles = Get-ChildItem C:Windows |  Where-Object  { $_.Name -like '*.log' } | Select-Object  FullName  

الاختلاف الوحيد بين هذا الأمر والأمر الأخير هو $ logfiles = bit. هذا يخبر PowerShell بحفظ إخراج Get-ChildItem C: Windows | Where-Object {$ _. Name -like ‘* .log’} | حدد الاسم الكامل للكائن - في متغير يسمى ملفات الدخول .

على عكس الأمر الأخير ، إذا قمت الآن بتشغيل الأمر الأحدث ، فلن يعرض أي نتيجة. والسبب في ذلك هو حفظ الإخراج الآن في المتغير بدلاً من عرضه على وحدة التحكم.

كيفية نسخ ملفات متعددة باستخدام PowerShell للجميع عقدة

في هذا الجزء الأخير من إنشاء النص الخاص بنا ، سنقدم السحر ForEach حلقة . إذا كنت تريد قراءة المزيد حول حلقة ForEach وصياغتها ، فانقر فوق حلقة ForEach.

بشكل عام ، تبدو صيغة حلقة ForEach كما يلي:

ForEach ($item in $collection) {Perform a task based on a powershell command}

لذلك ، إذا طبقنا هذا على حالتنا - مع الأخذ في الاعتبار أننا نريد نسخ جميع الملفات بامتداد .log باستخدام PowerShell - سيبدو أمر ForEach كما يلي:

ForEach ($logfile in $logfiles.  FullName  ) {Copy-Item $logfile -Destination 'D:Log Files'}

أخيرًا ، دعنا ندمج هذا الأمر الأخير مع Get-ChildItem من القسم الأخير. سيبدو النص النهائي كما يلي:

$logfiles = Get-ChildItem C:Windows |  Where-Object  { $_.Name -like '*.log' } | Select-Object  FullName  ForEach ($logfile in $logfiles.  FullName  ) {Copy-Item $logfile -Destination 'D:Log Files'}
لاحظ كيف أدرجت. الاسم الكامل في الجزء $ logfiles من حلقة ForEach. هذا لأنني استخدمت Select-Object Cmdlet في الجزء الأول من الأمر. إضافة هذا البت يحذف اسم العمود. خلاف ذلك ، سيرجع الأمر أخطاء.

إذا قمت بنسخ الأوامر المذكورة أعلاه في PowerShell ISE وحفظها ، فلديك البرنامج النصي الخاص بك! ومع ذلك ، لا يزال بإمكانك تشغيل الأوامر الفردية كما هو موضح في الصورة أدناه.

يتم تشغيل الأمر أعلاه ويعود PowerShell إلى موجهه كما لو لم يحدث شيء. ومع ذلك ، عندما تفتح مجلد الوجهة الذي حددته في بت حلقة ForEach للأمر ، فإن أمر PowerShell كان سينسخ الملفات - انظر لقطة الشاشة أدناه ...

كيفية نسخ كافة أنواع الملفات في مجلد وجميع المجلدات الفرعية

كيفية نسخ كافة أنواع الملفات في مجلد وجميع المجلدات الفرعية

حتى الآن ، غطى هذا الدليل خطوات نسخ ملف واحد باستخدام PowerShell. علاوة على ذلك ، غطى الدليل أيضًا خطوات لنسخ ملفات متعددة من مجلد.

لقد قمنا بتغطية بعض حالات نسخ ملفات PowerShell الرائعة.

kodi tv على التلفزيون الذكي

ومع ذلك ، هناك حالات تحتاج فيها إلى نسخ جميع الملفات بامتداد ملف معين من مجلد وجميع مجلداته الفرعية .

إذا تابعت مع المثال الأخير ، فقل أنني أريد نسخ جميع الملفات بامتداد ملف .log من ج: ويندوز المجلد وجميع مجلداته الفرعية - سأقوم ببساطة بتعديل ملف Get-ChildItem جزء من هذا الأمر:

$logfiles = Get-ChildItem C:Windows |  Where-Object  { $_.Name -like '*.log' } | Select-Object  FullName  ForEach ($logfile in $logfiles.  FullName  ) {Copy-Item $logfile -Destination 'D:Log Files'}

للحصول على Get-ChildItem الأمر لسرد جميع الملفات بامتداد الملف log ج: ويندوز وجميع مجلداته الفرعية - سأضيف ملف Get-ChildItem يسمى معلمة الأمر يعيد تنفيذ .

مع وضع هذا في الاعتبار ، سيبدو الأمر الجديد الخاص بي الآن كما يلي:

$logfiles = Get-ChildItem C:Windows -  Recurse  |  Where-Object  { $_.Name -like '*.log' } | Select-Object  FullName  ForEach ($logfile in $logfiles.  FullName  ) {Copy-Item $logfile -Destination 'D:Log Files'}

لتوجيه وجهة نظري إلى المنزل ، سأقوم بتشغيل الأمر Get-ChildItem بدون $ logfiles = bit. يقوم الأمر بإرجاع أخطاء لأنني أحاول الوصول إلى ملفات ليس لدي إذن بالوصول إليها.

تخزين html5 ضخم في وضع عدم الاتصال ممتلئ
كيفية نسخ كافة أنواع الملفات في مجلد وجميع المجلدات الفرعية

لإصلاح هذا الخطأ ، دعني أحاول فتح PowerShell كمسؤول. الآن ، عندما أقوم بتشغيل نفس الأمر ، فإنه يعرض بعض النتائج.

على عكس الأمر الأخير الذي لم يتضمن ملحق يعيد تنفيذ المعلمة ، هذا الأمر يعيد الكثير من الملفات. هذا لأن الأمر أعاد جميع الملفات الموجودة في مجلد المستوى الأعلى بالإضافة إلى الملفات الموجودة في جميع مجلداته الفرعية.

كيفية نسخ كافة أنواع الملفات في مجلد وجميع المجلدات الفرعية

أخيرًا ، لنسخ جميع الملفات في مجلد وجميع مجلداته الفرعية باستخدام PowerShell ، قم بتشغيل أمر مشابه للأمر أدناه.

تذكر أن تغير أجزاء المجلد الخاص بك. لقد قمت بتحسين مسارات مجلد المصدر والوجهة لتسهيل تحديدها وتغييرها إلى مسارك.
$logfiles = Get-ChildItem  C:Windows  -Recurse |  Where-Object  { $_.Name -like '*.log' } | Select-Object FullName ForEach ($logfile in $logfiles.FullName) {Copy-Item $logfile -Destination '  D:Log Files  '}
إذا كنت تريد حفظ هذا الأمر في PowerShell ISE وتشغيله كبرنامج نصي ، فقد ترغب في إضافة متغير ErrorAction إلى الأمر Get-ChildItem. مع المتغير ErrorAction ، سيبدو النص النهائي كما يلي:
$logfiles = Get-ChildItem  C:Windows  -Recurse -ErrorAction SilentlyContinue | Where-Object { $_.Name -like '*.log' } | Select-Object FullName ForEach ($logfile in $logfiles.FullName) {Copy-Item $logfile -Destination '  D:Log Files  '}

كيفية نقل الملفات في بوويرشيل

بصرف النظر عن نسخ الملفات ، يمكن لـ PowerShell أيضًا نقل الملفات. الفرق هو أنه عند نقل ملف ، يتم حذفه من مجلد المصدر الخاص به.

لذلك ، إذا كان نسخ الملفات ونقلها متشابهين تقريبًا ، فهذا يعني أنه يمكنك استخدام نفس الأوامر التي استخدمناها في هذا الدليل مع تعديل بسيط.

لتسهيل الأمر ، قمت بإدراج جميع الأوامر التي يغطيها هذا الدليل حتى الآن. ثم ، لكل أمر ، أقدم ملف انقل الملف ما يعادل الأمر.

قبل المتابعة ، من المهم الإشارة إلى أن الاختلاف الوحيد في الأوامر هو بت نسخ العنصر. بدلا من استخدام ملفات نسخ العنصر لنسخ ملف ، لنقل ملف ، ستستخدمه نقل العنصر .

كيفية نقل ملف واحد باستخدام PowerShell

أمر نسخ ملف واحد في PowerShell هو:

Get-ChildItem 'D:G-DriveWork ToolsProducts PortalByte Count Tool.txt' |  Copy-Item  -Destination 'D:G-DriveWork ToolsProducts Portal 2'

ومع ذلك ، لنقل الملف ، استخدم هذا الأمر بدلاً من ذلك:

Get-ChildItem 'D:G-DriveWork ToolsProducts PortalByte Count Tool.txt' |  Move-Item  -Destination 'D:G-DriveWork ToolsProducts Portal 2'

كيفية نقل كافة أنواع الملفات في مجلد باستخدام PowerShell

كما تمت مناقشته أعلاه ، إليك أوامر لنسخ جميع أنواع الملفات في مجلد.

$logfiles = Get-ChildItem C:Windows | Where-Object { $_.Name -like '*.log' } | Select-Object FullName ForEach ($logfile in $logfiles.FullName) {  Copy-Item  $logfile -Destination 'D:Log Files'}

من ناحية أخرى ، لنقل الملفات ، استخدم هذا الأمر بدلاً من ذلك.

لا قم بتشغيل الأمر أدناه دون تعديل ج: ويندوز جزء. إذا قمت بتشغيل الأمر ، فقد يتم نقل ملفات نظام التشغيل الهامة وقد يصبح جهاز الكمبيوتر الخاص بك غير مستقر. هذه الأوامر لأغراض التوضيح فقط!
$logfiles = Get-ChildItem C:Windows | Where-Object { $_.Name -like '*.log' } | Select-Object FullName ForEach ($logfile in $logfiles.FullName) {  Move-Item  $logfile -Destination 'D:Log Files'}

كيفية نقل كافة أنواع الملفات في مجلد وجميع المجلدات الفرعية

أخيرًا ، تنسخ الأوامر أدناه جميع الملفات الموجودة في المجلد المصدر وجميع مجلداته الفرعية.

$logfiles = Get-ChildItem C:Windows -Recurse -ErrorAction SilentlyContinue | Where-Object { $_.Name -like '*.log' } | Select-Object FullName ForEach ($logfile in $logfiles.FullName) {  Copy-Item  $logfile -Destination 'D:Log Files'}

لنقل الملفات ، استخدم هذا الأمر بدلاً من ذلك.

$logfiles = Get-ChildItem C:Windows -Recurse -ErrorAction SilentlyContinue | Where-Object { $_.Name -like '*.log' } | Select-Object FullName ForEach ($logfile in $logfiles.FullName) {    Move-Item    $logfile -Destination 'D:Log Files'}

آمل أن تكون قد وجدت طرق نسخ ونقل الملفات باستخدام PowerShell التي تمت مناقشتها في هذا الدليل مفيدة.

إذا وجدت أنها مفيدة ، يرجى التصويت نعم إلى هل كان هذا المنشور سؤالًا مفيدًا أدناه.

ومع ذلك ، إذا لم تنجح أي من الطرق معك أو كنت بحاجة إلى شيء آخر بخلاف الطرق التي تمت مناقشتها ، فانقر فوق رقم إلى هل كان هذا المنشور سؤالًا مفيدًا أدناه. بعد ذلك ، يرجى تزويدنا بتفاصيل إضافية. نراجع ملاحظات القراء ونحدّث أدلةنا لتلبية احتياجاتك باستمرار.

بدلاً من ذلك ، يمكنك طرح سؤال أو ترك تعليق أو تقديم ملاحظات باستخدام نموذج 'ترك الرد' الموجود في نهاية هذه الصفحة.

أخيرًا ، لمزيد من مناطق S PowerShell tech ، تفضل بزيارة صفحة دليل Windows PowerShell How-To. قد تجد أيضًا صفحة العمل من الصفحة الرئيسية الخاصة بنا مفيدة جدًا.