কোনও পাঠ্য ফাইল পড়ে ডিরেক্টরি কাঠামো থেকে ফাইলগুলি অনুসন্ধান এবং অনুলিপি করুন


1

আমার কাছে একটি ফোল্ডার রয়েছে যার মধ্যে অনেকগুলি সাবফোল্ডার এবং ফাইল রয়েছে। আমার কাছে একটি পৃথক গন্তব্য ফোল্ডারে নকল করা ফাইলগুলির নাম সহ একটি পাঠ্য ফাইল রয়েছে। পাঠ্য ফাইলে থাকা ফাইলের নামগুলির মধ্যে পথের তথ্য নেই।

গন্তব্য ফোল্ডারে, আমি ফাইল এবং এর ফোল্ডারের কাঠামো পুনরায় তৈরি করতে চাই। তার জন্য কি কোনও দ্রুত স্ক্রিপ্ট আছে? বা একটি সরঞ্জাম? আমি উইন্ডোজ এ আছি


1
বিন্দু থেকে শুরু করে আপনার উপর গড়ে তুলতে জন্য কিন্তু এই নিজেকে ভালো একটি ব্যাচ scripter জন্য তুচ্ছ হয় .... FOR /F "USEBACKQ TOKENS=*" %A IN ("C:\Folder\Path\TextFile.txt") DO ECHO %~A। । । ss64.com/nt/for_cmd.html । । । উপর পড়া আমার উত্তর কিছু যে প্রযোজ্য হতে পারে শুধু কিছু বাছাই এবং পঠিত হিসাবে আমি নিশ্চিত আমি আগে কারো জন্য এই সঙ্গে সাহায্য করেছেন আছি: superuser.com/search?q=user%3A510662+body%3A+for+%2Ff
পিম্প জুস আইটি

উত্তর:


2

নিম্নলিখিত পাওয়ারশেল স্ক্রিপ্টটি আপনার যা করা উচিত তা করা উচিত।

আপনার পরিবেশের সাথে মানানসই প্রথম তিনটি পরিবর্তনশীল পরিবর্তন করুন।

## Q:\Test\2018\06\28\SU_1334840.ps1
#Requires -Version 3

# get files to copy from file in same foler
$FileList = Get-Content '.\FileList.txt'
$BaseSrc = 'X:\Source\path\'
$BaseDst = 'Y:\Destination\path\'

ForEach ($File in $FileList){
   ForEach ($Find in (Get-ChildItem $BaseSrc$File -File -Recurse)) {
       $DestFile = Join-Path $BaseDst ($Find.FullName.Replace($BaseSrc,'') )
       $DestDir = Split-Path $DestFile
       If (!(Test-Path $DestDir)){ MD $DestDir |Out-Null}
       # "Copying {0} to {1}" -f $Find.FullName,$DestFile
       Copy-Item $Find.FullName $DestFile
    }
}

স্ক্রিপ্টটি চলাকালীন কী চলছে তা দেখতে, #আগে সরিয়ে ফেলুন"Copying...

স্ক্রিপ্টটির জন্য কমপক্ষে পাওয়ারশেল সংস্করণ 3 প্রয়োজন

আপনার উত্স ট্রিতে আপনার তালিকার আকার / ফাইল এবং সাবডার সংখ্যার উপর নির্ভর করে এটি কিছুটা আলাদা পদ্ধতির দ্রুত হতে পারে।

## Q:\Test\2018\06\28\SU_1334840_2.ps1
#Requires -Version 3

# get files to copy from file in same foler
$FileList = Get-Content '.\FileList.txt'
$BaseSrc = 'X:\Source\path\'
$BaseDst = 'Y:\Destination\path\'

ForEach ($File in (Get-ChildItem $BaseSrc -File -Recurse)) {
    If ($File.Name -in $FileList) {
       $DestFile = Join-Path $BaseDst ($File.FullName.Replace($BaseSrc,'') )
       $DestDir = Split-Path $DestFile
       If (!(Test-Path $DestDir)){ MD $DestDir |Out-Null}
       "Copying {0} to {1}" -f $File.FullName,$DestFile
       Copy-Item $File.FullName $DestFile
    }
}

নমুনা আউটপুট:

> . Q:\Test\2018\06\28\SU_1334840.ps1
Copying C:\sys\7z.dll to A:\Test\sys\7z.dll
Copying C:\sys\7z.exe to A:\Test\sys\7z.exe
Copying C:\sys\ClipBoard.exe to A:\Test\sys\ClipBoard.exe
Copying C:\sys\ClipBoard.txt to A:\Test\sys\ClipBoard.txt
Copying C:\sys\DUMPHEX.EXE to A:\Test\sys\DUMPHEX.EXE

এটি কাজ করে, কোনও কারণে স্ক্রিপ্টটি "00-00-00_0001 0894 0007861.JPG" এর মতো কিছু ফাইল খুঁজে পায় না। কোন ফাইল খুঁজে পাওয়া যায়নি তার তালিকা করার উপায় আছে? (আপনি কি উল্টানো কমা এবং সেই ফাইলের নামের মধ্যে প্রথম 0 খোলার মধ্যে স্পেস লক্ষ্য করেছেন?
রেগমি

আমরা এই জাতীয় ফাইলগুলির জন্য একটি সমাধান পেয়েছি। আমরা টেক্সট ফাইলে সমস্ত ফাইলের নাম * * দিয়ে চাপিয়ে দিয়েছি। ধন্যবাদ!
রেগমি

প্রতিক্রিয়া জানাতে ধন্যবাদ, ঠিক বিরলতার বাইরে - আপনার চেষ্টাগুলিতে কোন রূপটি দ্রুত ছিল?
লটপিংস

প্রথমটি আসলে আরও ভাল ছিল এবং আমি এটি ব্যবহার করে শেষ করেছিলাম! আমার কাছে ফাইললিস্ট.টেক্সটে প্রায় 17k ফাইলের নাম আছে এবং মেশিনটি 16 জি র‌্যাম, উইন 2012 সার্ভার।
রেজিমি

বাহ, এই সংখ্যাগুলি থেকে আমি প্রত্যাশা করতাম যে কোনওটি পরবর্তী নেতৃত্ব দিচ্ছে, তবে ফাইল সার্ভারের ক্যাচিংটি এটি সক্রিয় বলে মনে হচ্ছে।
লটপিংস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.