ব্যাচ ফাইলের মাধ্যমে পাঠ্যটি সন্ধান করুন এবং প্রতিস্থাপন করুন


0

আমি এই প্রশ্নটি জিজ্ঞাসা করে দেখেছি তবে কখনই আমার প্রয়োজন তার উপযুক্ত উত্তর নেই

আমি কম্পিউটার সিস্টেমে রিমোট টেক সাপোর্ট করার কাজ করি এবং আমি প্রায়শই যা করতে হবে তার মধ্যে একটি ইনআই ফাইলগুলি খুলুন এবং নির্দিষ্ট লাইনগুলিকে নতুন করে প্রতিস্থাপন করুন

উদাহরণ হিসাবে আমরা বলব।

program.ini

প্রোগ্রামের স্থিতি = ক্লায়েন্ট

ঠিক আছে আমাকে সার্ভারে এটি পরিবর্তন করতে হবে যাতে এটি পড়ে

প্রোগ্রামের স্থিতি = সার্ভার

যদিও হ্যাঁ আমি এটি নোটপ্যাডে খুলতে পারি আমি একটি ব্যাচ ফাইলে কমান্ড লাইনের মাধ্যমে এটি করতে সক্ষম হতে চাই কারণ আমি ইতিমধ্যে আমার যা কিছু কাজ করেছি তার জন্য একটি ব্যাচের সরঞ্জাম রয়েছে tool

এখন, নোট করুন যে প্রতিটি কম্পিউটার পাওয়ারশেল স্ক্রিপ্টগুলিকে সমর্থন করে না তাই এটি কেবল একটি ব্যাচের ফাইলে থাকতে হবে। আমি কোনও অতিরিক্ত সফ্টওয়্যার ডাউনলোড করতে পারি না কারণ এটি আমার সাথে সংযুক্ত হবার সিস্টেম নয় systems

যে কেউ জানে যে আমি যেমন ক্ষতির মধ্যে আছি তখন এটি কীভাবে ব্যাচের মাধ্যমে খাঁটিভাবে করা হবে। কমান্ড লাইনের মাধ্যমে কোনও সম্পাদক খুলতে চাইছেন না, কেবল একটি সরাসরি এটি চালান এবং সেই লাইনটি ini ফাইলে পরিবর্তিত হবে।

যে কোনও ইনপুট-টেরার জন্য ধন্যবাদ


সম্পাদিত রেখাগুলি কি যথাযথভাবে থাকা দরকার? আমরা VBScript এবং cscript অনুমান করতে পারি?
harrymc

হ্যাঁ, এটি প্রায় 100+ লাইনের সাথে অন্তর্নিহিত এবং ক্রমযুক্ত থাকতে হবে। এবং যেমনটি বলা হয়েছে, এতে কোনও অতিরিক্ত ফাইল, ইনস্টলেশন বা ডাউনলোড অন্তর্ভুক্ত করা যায় না। একটি ব্যাচের স্ক্রিপ্টে খাঁটি কমান্ড লাইন কমান্ডের জন্য উপায় খুঁজছেন। আমি লিনাক্স ব্যাশ এবং এখনও উইন্ডোজগুলির জন্য এই জিনিসগুলি শিখতে অভ্যস্ত। আমি ভুল হলে আমাকে সংশোধন করুন, তবে কোনও ভিবিএস স্ক্রিপ্ট বা সিএসক্রিপ্টের জন্য অতিরিক্ত ফাইলের প্রয়োজন হবে না?
টেরা হিংসা

1) আপনি যখন কোনও মন্তব্যের জবাব দেওয়ার জন্য আরও তথ্য যুক্ত করেন, দয়া করে সম্পাদনা ক্লিক করুন এবং এটি আপনার মূল প্রশ্নের সাথে যুক্ত করুন, সুতরাং প্রশ্নটিতে সমস্যাটি ব্যাখ্যা করার জন্য প্রয়োজনীয় সমস্ত তথ্য রয়েছে। তারপরে, এর শেষে ধূসর (এস) এ ক্লিক করে মন্তব্যটি মুছুন, কারণ মন্তব্যগুলি পাইল করতে পারে এবং যখন তারা করে, কিছু মন্তব্য লুকিয়ে যায়।
K7AAY

কোনও নেটিভ অনুসন্ধান পাঠ্য নেই এবং উইন্ডোজে প্রশংসা প্রতিস্থাপন করুন। 2) পিসি ডাব্লু / পাওয়ারশেলের জন্য, আপনি স্ক্রিপ্ট করতে পারেন / বিড়ালের মত একটি কমান্ড প্রোগ্রাম % {$ <আন্ডারস্কোর> -replace "কর্মসূচির অবস্থা = ক্লায়েন্ট", "প্রোগ্রাম অবস্থা = সার্ভার"} (প্রতিস্থাপন <আন্ডারস্কোর> W / একটি বাস্তব আন্ডারস্কোর অক্ষর।
K7AAY

3) পিসিতে W / না PowerShell যোগ ওপেন সোর্স সুপারিশ জন্য sed ও এর নির্ভরতা gnuwin32.sourceforge.net/packages/sed.htm (যার ফলে কোনো ইনস্টলেশন এড়ানো বা রেজিস্ট্রি পরিবর্তন) একটি টেম্প নির্দেশিকাতে, যে একটি sed স্ক্রিপ্টটি রান কার্য (গুলি) এর জন্য ডিরেক্টরি, তারপরে এটি এবং এর নির্ভরতাগুলি আপনি শেষ কাজ হিসাবে পরিষ্কার করুন। 4) একটি বিকল্প ওপেন সোর্স FreeDOS হয় edlin en.wikipedia.org/wiki/Edlin#Scripts উইন্ডোজ 10 x64 & x32 এবং তার আগে উইন্ডোজ সংস্করণ রান। এটি সাধারণ অনুসন্ধানের পাঠ্য এবং স্ক্রিপ্টিং প্রতিস্থাপনের অনুমতি দেয়। sourceforge.net/projects/freedos-edlin/files/latest/download
K7AAY

উত্তর:


2

এই ব্যাচ ফাইলটিতে কিছু ডায়াগনস্টিক তথ্যও রয়েছে। একটি লুপের মধ্যে ভেরিয়েবলগুলি সঠিকভাবে খেলতে সেটলোকল লাইনটি প্রয়োজনীয় QU

এই পদ্ধতিটি ব্যবহারের সর্বাধিক উল্লেখযোগ্য পার্শ্ব প্রতিক্রিয়া হ'ল ফাঁকা লাইনগুলি মুছে ফেলা হয় (তারা ফর দ্বারা উপেক্ষা করা হয়) এবং আপনার পরীক্ষাগুলি ("নতুন মান লিখুন" বিভাগে) খুব নির্দিষ্ট: স্পেস এবং কেস ম্যাটার। আপনি / i এর সাথে কেস সংবেদনশীল মিল করতে পারেন তবে আপনি যেহেতু আপনার প্রশ্নের ফাঁকগুলি অন্তর্ভুক্ত করছেন আমি সন্দেহ করি আপনি এগুলি অন্তর্ভুক্ত করতে পছন্দ করেন। প্রতিটি সম্ভাব্য তুলনা প্রতিলিপি করতে আপনাকে এই বিভাগে করা একাধিক লাইন অন্তর্ভুক্ত করতে হবে।

@ECHO OFF
setlocal enableDelayedExpansion

FOR /F "tokens=1,* delims==" %%i IN (test.ini) DO (
    SET sdone=0
    SET "sname=%%i"
    SET "svalue=%%j"
    ECHO.Name:  !sname!
    ECHO.Value: !svalue!

    :: write out headers
    IF "!sdone!"=="0" IF "!sname:~0,1!"=="[" SET sdone=1&&ECHO.Type:  Header&&ECHO.!sname!>>new.ini

    :: write out the new value if it's client
    IF "!sdone!"=="0" IF "!sname!"=="program status" IF "!svalue!"=="client" SET sdone=1&&ECHO.Type:  Rewrite&&ECHO.!sname!=server>>new.ini
    IF "!sdone!"=="0" IF "!sname!"=="program status " IF "!svalue!"==" client" SET sdone=1&&ECHO.Type:  Rewrite&&ECHO.!sname!=server>>new.ini

    :: write out anything else
    IF "!sdone!"=="0" SET sdone=1&&ECHO.Type:  Content&&ECHO.!sname!=!svalue!>>new.ini

    :: a little padding to read the debug info
    ECHO.
)

শেষে আপনি মূল ফাইলটি ওভাররাইট করতে কিছু যুক্ত করতে চাইবেন, এরকম কিছু:

copy /y new.ini test.ini

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