উইন্ডোজের কোন কমান্ড ইউনিক্স থেকে পুনরাবৃত্ত মুভ / নাম পরিবর্তন কমান্ড অনুকরণ করে?
উইন্ডোজের কোন কমান্ড ইউনিক্স থেকে পুনরাবৃত্ত মুভ / নাম পরিবর্তন কমান্ড অনুকরণ করে?
উত্তর:
এক্সপির for
কমান্ড ব্যবহার করুন । উদাহরণস্বরূপ কমান্ড লাইন থেকে ( %%x
পরিবর্তে একটি ব্যাচ ফাইলে ব্যবহার করুন) একটি পুনরাবৃত্ত পদক্ষেপ করতে:
for /r %x in (foo) do move "%x" "drive:\path\bar"
একটি পুনরাবৃত্ত নামকরণ করতে:
for /r %x in (*.c) do ren "%x" *.cpp
উদাহরণ ব্যাচ:
for /r "< DIR >" %%x in (*.c) do ren "%%x" *.cpp
*.*
কীভাবে কাজ করবে তা চিনতে আমি কীভাবে ওয়াইল্ড কার্ড সেট করব ?
robocopy "C:\Source Folder" "C:\Destination Folder" /E /COPYALL /XJ
Description of parameters:
/E - copy subdirectories, including Empty ones (/S to exclude empty ones)
/COPYALL - COPY ALL file info (equivalent to /COPY:DATSOU)
/XJ - eXclude Junction points and symbolic links. (normally included by default).
আমি মুভি কমান্ডটি দিয়ে আমার উইন্ডোজ এক্সপি এসপি 2 বাক্সে একটি ছোট উদাহরণটি চালিয়েছি এবং এটি কার্যকর হয়েছে। সমস্ত ফাইল এবং ডিরেক্টরিগুলি উত্স থেকে গন্তব্যে স্থানান্তরিত হয়েছিল। উত্স এবং গন্তব্য ডিরেক্টরি নাম।
উত্স ভাগ্য সরান
স্প্রিং মাইক্রোসফ্ট উইন্ডোজ এক্সপি [সংস্করণ 5.1.2600]
সরানো /? ফাইল সরানো এবং ফাইল এবং ডিরেক্টরি নামকরণ। এক বা একাধিক ফাইল সরিয়ে নিতে: সরান [/ ওয়াই | / -Y] [ড্রাইভ:] [পথ] ফাইলের নাম 1 [, ...] গন্তব্য ডিরেক্টরিটির নতুন নামকরণ করতে: সরান [/ ওয়াই | / -Y] [ড্রাইভ:] [পথ] dirname1 dirname2 [ড্রাইভ:] [পথ] ফাইলের নাম 1 ফাইলের অবস্থান এবং নাম নির্দিষ্ট করে অথবা আপনি যে ফাইলগুলি সরাতে চান সেগুলি। গন্তব্য ফাইলের নতুন অবস্থান নির্দিষ্ট করে। গন্তব্য ড্রাইভ লেটার এবং কোলন সমন্বিত থাকতে পারে, ক ডিরেক্টরি নাম, বা একটি সংমিশ্রণ। আপনি যদি চলন্ত হয় শুধুমাত্র একটি ফাইল, আপনি যদি একটি ফাইলের নাম অন্তর্ভুক্ত করতে পারেন তবে আপনি যখন ফাইলটি সরান তখন আপনি নাম পরিবর্তন করতে চান। [ড্রাইভ:] [পথ] dirname1 আপনি যে ডিরেক্টরিটি নাম পরিবর্তন করতে চান তা সুনির্দিষ্ট করে। dirname2 ডিরেক্টরিটির নতুন নাম উল্লেখ করে। / ওয়াই আপনি চাইছেন তা নিশ্চিত করতে অনুরোধ জানায় resses একটি বিদ্যমান গন্তব্য ফাইল ওভাররাইট করুন। / -Y আপনি ওভাররাইট করতে চান তা নিশ্চিত করার অনুরোধ জানায় একটি বিদ্যমান গন্তব্য ফাইল। স্যুইচ / ওয়াই COPYCMD এনভায়রনমেন্ট ভেরিয়েবলের মধ্যে উপস্থিত থাকতে পারে। এটি কমান্ড লাইনে / -Y দিয়ে ওভাররাইড করা হতে পারে। ডিফল্ট হয় মুভি কমান্ডটি কার্যকর করা না হলে ওভাররাইটগুলিতে অনুরোধ জানানো হবে একটি ব্যাচ স্ক্রিপ্ট মধ্যে।
অন্তর্নির্মিত XCOPY কমান্ডটি নিকটে। এটি একটি পুনরাবৃত্তির অনুলিপি করবে, তবে আমি মনে করি না এটি পুনর্নামকে সমর্থন করে।
for /r %%x in (%1) do ren "%%x" %2
এটি পুনরাবৃত্তভাবে ফাইলটির নাম পরিবর্তন করবে :-)
একটি ফাইলে সংরক্ষণ করুন এক্সটেনশান এবং এক্সটেনশান থেকে 2 টি আর্গুমেন্ট দিন।
উদাহরণস্বরূপ: ফাইলের নাম হল টেস্ট.ব্যাট কমান্ড: পরীক্ষা * .আবি * .বিএমপি
এটি বিএমপি-তে এক্সটেনশন এভিআই সহ সমস্ত ফাইলের নাম পরিবর্তন করে (সমস্ত সাবফোল্ডারে :))
দ্রষ্টব্য: রব কামালের দ্বারা 26 অক্টোবর 13:20 এ উত্তর দেওয়া পোস্টটির জন্য এটি সংশোধন। তিনি দিয়েছেন
/r %x in (*.c) do ren "%x" *.cpp
যেখানে এটির পরিবর্তে % এর পরিবর্তে %% রয়েছে
এটি আমার পক্ষে আরও ভাল কাজ করেছে:
FOR /R "C:\folder1\folder2\" %i in (.,*) DO MOVE /Y "%i" "C:\folder1\"
সূত্র: http://www.islamadel.com/index.php/notes/6-computer/10-windows-command-line
বেশিরভাগ ইউনিক্স কমান্ডের জন্য উইন্ডোজ পোর্ট রয়েছে:
আমি একটি ভিবি স্ক্রিপ্ট তৈরি করেছি যা অনুসন্ধানের জন্য এবং ডিরেক্টরিগুলির নামগুলি প্রতিস্থাপন করবে ... আমার কাছে একটি ফাইল সংস্করণও রয়েছে, তবে আমি মনে করি এটি আপনাকে নিজের স্ক্রিপ্ট দিয়ে শুরু করার জন্য যথেষ্ট। আমি এই স্ক্রিপ্টটি যেভাবে ব্যবহার করি তা হ'ল আমার একটি আছে fileandreplacedirs.vbs
এবং আমি যে ফোল্ডারটির নাম পরিবর্তন করতে চাইছি সেটিকে একই ফোল্ডারে রেখেছি। এছাড়াও, এটি অগত্যা ফোল্ডারে পুনরাবৃত্তি হয় না, তবে সামান্য পরিবর্তন করে
search1 = InputBox("Search for...", "", "")
replace1 = InputBox("replace with...", "", "")
Dim MyFile
MyFiles = GetFileArray(".")
For Each MyFile In MyFiles
NewFilename = Replace(MyFile.Name, search1, replace1)
If InStr( MyFile.Name, search1 ) Then MyFile.Name = NewFilename
Next
MsgBox "Done..."
function GetFileArray(ByVal vPath)
'Get our objects...
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.Getfolder(vPath)
Set Files = Folder.SubFolders
'Resize the local array
'Arrays are 0 based but Files collection is 1 based.
if Files.count = 0 then
GetFileArray = array()
Exit Function
Else
Index = 0
Redim FileList(Files.Count-1)
For Each File In Files
set FileList(Index) = File
Index = Index + 1
Next
GetFileArray = FileList
End If
'Always good practice to explicitly release objects...
Set FSO = Nothing
Set Folder = Nothing
Set Files = Nothing
End function
একটি সাধারণ ডস কমান্ড ব্যবহার করুন।
সিডি উত্স ডিরেক্টরিতে যেখানে আপনি ফাইলের এক্সটেনশনগুলির পুনরাবৃত্তভাবে নাম পরিবর্তন করতে চান।
এই আদেশটি টাইপ করুন:
ren *.[CurrentFileExtension] *.[DesiredFileExtension]
if exist
ফাইলটি প্রতিটি ফোল্ডারে উপস্থিত না থাকলে আমি ত্রুটি ফেরানোর বিষয়টি এড়াতে যুক্ত করেছিলাম (এটি জেনকিন্সে গুরুত্বপূর্ণ তাই এটি কোনও বিল্ড ভেঙে দেয় না):
for /r %x in (foo) do if exist "%x" move "%x" "drive:\path\bar"
একটি পুনরাবৃত্ত নামকরণ করতে:
for /r %x in (*.c) do if exist "%x" ren "%x" *.cpp
উদাহরণ ব্যাচ:
for /r "< DIR >" %%x in (*.c) do if exist "%%x" ren "%%x" *.cpp
পাওয়ারশেল আপনার বন্ধু। কোনও ব্যাচ ফাইল বা স্ক্রিপ্টের প্রয়োজন নেই। উদাহরণস্বরূপ, দূরবর্তী ডিরেক্টরিতে সমস্ত .tiff ফাইলকে পুনরায় নামকরণ করতে .টিফের জন্য আপনি পাওয়ারশেল থেকে নিম্নলিখিত কমান্ডটি চালাতে পারেন:
get-childitem "\\\servername\d$\path" -recurse -Include *.tiff | Rename-Item -NewName {
$_.Name.replace(".tiff",".tif") }
আমি পাই পাই এই পাইথন লিপিটি যা কাজ করে:
for root, dirs, files in os.walk(cur_dir):
for filename in files:
file_ext = os.path.splitext(filename)[1]
if old_ext == file_ext:
oldname = os.path.join(root, filename)
newname = oldname.replace(old_ext, new_ext)
os.rename(oldname, newname)
আমি পাইথনকে আমার পথে যুক্ত করেছি এবং পাইথন স্ক্রিপ্টটিকে উপরে 'ইউটিস' ফোল্ডারে রেখেছি। আমি তখন এটি চালানোর জন্য এই সাধারণ ব্যাচের স্ক্রিপ্ট তৈরি করেছি: rn.bat:
python \utils\rn.py %1 %2 %3
কমান্ড লাইন থেকে এর আরোগুলি নেওয়ার জন্য আমি উপরে পাইথন স্ক্রিপ্টটি আপডেট করেছি। rn.py:
import sys
import os
cur_dir = sys.argv[1]
old_ext = sys.argv[2]
new_ext = sys.argv[3]
#print cur_dir, old_ext, new_ext
for root, dirs, files in os.walk(cur_dir):
for filename in files:
file_ext = os.path.splitext(filename)[1]
if old_ext == file_ext:
oldname = os.path.join(root, filename)
newname = oldname.replace(old_ext, new_ext)
os.rename(oldname, newname)
অবশেষে এখনই সকলকেই করা দরকার এর কিছু:
>rn . .foo .bar
অথবা
>rn \ .exe .txt
দ্বিতীয়টির সাথে মজা করুন :)