আপনি কীভাবে আপনার ব্যাচের ফাইল আউটপুট থেকে একটি নতুন লাইন সন্নিবেশ করতে পারেন?
আমি এরকম কিছু করতে চাই:
echo hello\nworld
যা আউটপুট হবে:
hello
world
echo Yes&echo No
আপনি কীভাবে আপনার ব্যাচের ফাইল আউটপুট থেকে একটি নতুন লাইন সন্নিবেশ করতে পারেন?
আমি এরকম কিছু করতে চাই:
echo hello\nworld
যা আউটপুট হবে:
hello
world
echo Yes&echo No
উত্তর:
echo hello & echo.world
এর অর্থ আপনি & echo.
একটি নতুন লাইনের জন্য ধ্রুবক হিসাবে সংজ্ঞায়িত করতে পারেন \n
।
echo. && echo hello && echo. && echo world
$ (echo Hello && echo World) > ./File.txt
echo(
উন্নত পারফরম্যান্সের জন্য আরও ভাল সিনট্যাক্স (এখনও কোনও স্থান আপনার মনে নেই)। ECHO
ব্যবহার করুন:
echo hello
echo.
echo world
echo "Makefile contents (which has \n)" > Makefile
একাধিক প্রতিধ্বনি ব্যবহার করে একটি মেকফিল তৈরি করছি, এটি কার্যকর হবে না
(echo hello & echo world) >> ./test.txt
echo line 1 > Makefile
এবং তারপর echo line 2 >> Makefile
। >>
আউটপুটটিকে ফাইলের সাথে যুক্ত করার কারণগুলির ব্যবহার , যা আপনার ক্ষেত্রে এই ক্ষেত্রে অবশ্যই প্রয়োজন আচরণ।
আপনি এখানে যান, এতে নীচের সাথে একটি .bat ফাইল তৈরি করুন:
@echo off
REM Creating a Newline variable (the two blank lines are required!)
set NLM=^
set NL=^^^%NLM%%NLM%^%NLM%%NLM%
REM Example Usage:
echo There should be a newline%NL%inserted here.
echo.
pause
নিম্নলিখিত ফলাফলগুলির মতো আপনার আউটপুটটি দেখতে হবে:
There should be a newline
inserted here.
Press any key to continue . . .
স্পষ্টতই, আপনার কেবলমাত্র আরইএম বিবৃতিগুলির মধ্যে কোড দরকার।
set nl=^&echo.
, তারপরে কেবল echo hello %nl% world
একই প্রভাব পাওয়া যায়।
echo:
ফাঁকা রেখা লেখার জন্য সেন্টিমিডি / ব্যাট-ফাইলগুলিতে একটি স্ট্যান্ডার্ড বৈশিষ্ট্য রয়েছে যা আপনার সেন্টিমিটার-আউটপুটে একটি নতুন লাইন অনুকরণ করে:
@echo off
@echo line1
@echo:
@echo line2
সেন্টিমিডি-ফাইলের উপরে উদ্ধৃত আউটপুট:
line1
line2
echo(
। দেখে মনে হচ্ছে এটি সমস্যার কারণ হতে পারে তবে এটি আসলে পুরোপুরি কার্যকর হয়। অন্যান্য সমস্ত ফর্মের কমপক্ষে একটি পরিস্থিতি রয়েছে যেখানে কমান্ডটি পছন্দ মতো কাজ করবে না।
ECHO(
ব্যর্থ হয়ে যায় এমন দৃশ্যের সাথে আর কেউ আসেনি ।
echo
এবং এর প্রভাবগুলি কী?" এর ধারায় কিছু রয়েছে ?
কেনের উত্তরটির মতো তবে বিলম্বিত সম্প্রসারণের ব্যবহারের সাথে।
setlocal EnableDelayedExpansion
(set \n=^
%=Do not remove this line=%
)
echo Line1!\n!Line2
echo Works also with quotes "!\n!line2"
প্রথমে একটি একক লাইনফিড অক্ষর তৈরি করা হয় এবং vari n-ভেরিয়েবলকে বরাদ্দ করা হয়।
এটি লাইন প্রান্তে ক্যারেট হিসাবে কাজ করে পরবর্তী চরিত্রটি থেকে বাঁচার চেষ্টা করে তবে এটি যদি লাইনফিড হয় তবে এটিকে উপেক্ষা করা হবে এবং পরবর্তী অক্ষরটি পড়তে হবে এবং পালাতে হবে (এমনকি এটি লাইনফিড হলেও)।
তারপরে আপনার বর্তমান নির্দেশনা শেষ করতে তৃতীয় লাইনফিডের প্রয়োজন, অন্যথায় তৃতীয় লাইনটি এলএফ-ভেরিয়েবলের সাথে সংযুক্ত করা হবে।
এমনকি ব্যাচের ফাইলগুলির সিআর / এলএফের সাথে লাইন শেষ হয় কেবল এলএফই গুরুত্বপূর্ণ, কারণ পার্সারের এই পর্যায়ে সিআরগুলি সরানো হয়।
বিলম্বিত সম্প্রসারণটি ব্যবহার করার সুবিধাটি হ'ল, এখানে কোনও বিশেষ চরিত্র হ্যান্ডলিং নেই।
echo Line1%LF%Line2
ব্যর্থ হবে, কারণ পার্সার একক লাইনফিডে পার্সিং বন্ধ করে দেয়।
আরও ব্যাখ্যা
এসও তে রয়েছে: ভিস্টা / ডস ব্যাচ (.bat) ফাইলের একাধিক লাইনে লং কমান্ডগুলি বিভক্ত হয়ে গেছে
: উইন্ডোজ কমান্ড ইন্টারপ্রেটার (সিএমডি.এক্সই) কীভাবে স্ক্রিপ্টগুলি পার্স করে?
সম্পাদনা: এড়িয়ে চলুন echo.
এটি প্রশ্নের উত্তর দেয় না, কারণ প্রশ্নটি একক ছিল echo
যা একাধিক লাইন আউটপুট করতে পারে।
তবে অন্যান্য উত্তরগুলির পরেও যারা echo.
নতুন লাইন তৈরির জন্য ব্যবহারের পরামর্শ দেয় , তবুও এটি লক্ষ করা উচিত যে echo.
এটি সবচেয়ে খারাপ, কারণ এটি খুব ধীর এবং এটি সম্পূর্ণরূপে ব্যর্থ হতে পারে, কারণ cmd.exe নামের একটি ফাইল অনুসন্ধান ECHO
করে এবং এটি শুরু করার চেষ্টা করে।
খালি লাইন মুদ্রণের জন্য, আপনি একটি ব্যবহার করতে পারেন
echo,
echo;
echo(
echo/
echo+
echo=
কিন্তু ব্যবহারের echo.
, echo\
বা echo:
, এড়িয়ে চলা উচিত হিসাবে তারা সত্যিই ধীর হতে পারে, যেখানে স্ক্রিপ্ট নেটওয়ার্ক ড্রাইভে মত, মৃত্যুদন্ড কার্যকর করা হবে নির্ভর করে।
call :pause line1!\n!line2
, সাব্রোটিন দিয়ে শুরু করুন setlocal EnableDelayedExpansion
এবং setlocal DisableDelayedExpansion
নিউলাইনগুলিকে অকাল ব্যাখ্যা করা থেকে বিরত রাখতে এটি শেষ করুন ।
echo,
echo;
echo(
echo/
echo+
echo=
এবং দুর্বৃত্ত গ্যালারী জন্য +1 echo.
echo\
echo:
। এখন যদি আপনি পবিত্র হেক কেন এই কাজগুলি ব্যাখ্যা করে থাকেন তবে আমি আপনার কাছে একটি বিনামূল্যে বিয়ার পাব।
echo.
যথেষ্ট বলেছ.
আপনার যদি একক লাইনে এটি প্রয়োজন হয় তবে এটি ব্যবহার করুন &
। উদাহরণ স্বরূপ,
echo Line 1 & echo. & echo line 3
আউটপুট হিসাবে হবে:
Line 1
line 3
এখন বলুন যে আপনি কিছুটা অনুরাগী চান, ...
set n=^&echo.
echo hello %n% world
আউটপুট
hello
world
তারপরে %n%
আপনি যখনই ইকো স্টেটমেন্টে একটি নতুন লাইন চান তখন কেবল একটি নিক্ষেপ করুন । এটি \n
বিভিন্ন ভাষায় আপনার ব্যবহৃত আরও বেশি কাছাকাছি ।
ভাঙ্গন
set n=
ভেরিয়েবলটি n
সমান সেট করে :
^
পরবর্তী প্রতীক অনুসরণ করতে নালার:
&
একই লাইনে অন্য কমান্ড করার অর্থ। আমরা ত্রুটি-বিসর্জন (উচ্চস্বরে কান্নাকাটি করার প্রতিধ্বনি বিবৃতি) সম্পর্কে চিন্তা করি না, সুতরাং কোনও &&
প্রয়োজন নেই।
echo.
প্রতিধ্বনি বিবৃতি অবিরত।
এই সমস্ত কাজ করে কারণ আপনি প্রকৃতপক্ষে কোডযুক্ত ভেরিয়েবলগুলি তৈরি করতে এবং অন্যান্য কমান্ডের অভ্যন্তরে এগুলি ব্যবহার করতে পারেন। এটি ঘেটো ফাংশনের মতো, কারণ ব্যাচ হ'ল শেল স্ক্রিপ্টিং ভাষার মধ্যে সবচেয়ে উন্নত নয়। এটি কেবলমাত্র কাজ করে কারণ ব্যাচের ভেরিয়েবলগুলির দুর্বল ব্যবহার, প্রাকৃতিকভাবে ইনটস, চর, ফ্লোটস, স্ট্রিং ইত্যাদির মধ্যে নকশাকৃত নয়।
আপনি যদি কৌতুকপূর্ণ হন তবে আপনি এটি অন্য জিনিসগুলির সাথে কাজ করতে পারেন। উদাহরণস্বরূপ, এটি কোনও ট্যাব প্রতিধ্বনিত করতে ব্যবহার করা
set t=^&echo. ::there are spaces up to the double colon
echo.
এটি প্রথমে সেই নামে কোনও ফাইল সন্ধানের চেষ্টা হিসাবে ব্যবহার করবেন না । অন্যান্য বিরামচিহ্নগুলি ব্যবহার করুন, যেমনecho,
কোনও ফাইলে পুনর্নির্দেশের জন্য কোনও কিছু প্রতিধ্বনিত করার সময়, একাধিক প্রতিধ্বনি কাজ করবে না। আমি মনে করি সম্ভবত ">>" পুনঃনির্দেশক একটি ভাল পছন্দ:
ইকো হ্যালো> টেম্প প্রতিধ্বনি বিশ্ব >> টেম্পোর
(echo hello && echo world) > temp
নাথন জে ব্রুয়ার (বর্তমান) গৃহীত উত্তর কাজগুলির একটি মন্তব্যে উল্লেখ করেছেন।
গ্রিমট্রন যেমন পরামর্শ দেয় - এটির সংজ্ঞা দেওয়ার জন্য এখানে একটি দ্রুত উদাহরণ রয়েছে:
@echo off
set newline=^& echo.
echo hello %newline%world
C:\>test.bat
hello
world
echo hello %newline%world
লাইনটি পুনরাবৃত্তি করেন তবে এর মধ্যে কোনও ফাঁকা স্থান নেই।
echo "Hello %newline% world"
এটি কোটের ভিতরে থাকায় ব্যর্থ হয়। কারণ এটি সত্যিকারের নতুন লাইন নয়।
আপনি এটির মতোও করতে পারেন,
(for %i in (a b "c d") do @echo %~i)
আউটপুট হবে,
a
b
c d
মনে রাখবেন যে এটি যখন একটি ব্যাচের ফাইলে রাখা হবে তখন '%' দ্বিগুণ হবে।
(for %%i in (a b "c d") do @echo %%~i)
যদি কেউ এখানে আসে কারণ তারা এমিংডাব্লু মেক মেকফিল থেকে একটি ফাঁকা রেখা প্রতিধ্বনিত করতে দেখছে, আমি ব্যবহার করেছি
@cmd /c echo.
কেবল echo.
ভয়ঙ্কর কারণ ব্যবহার করেprocess_begin: CreateProcess(NULL, echo., ...) failed.
ত্রুটি বার্তা তৈরি হয়।
আমি আশা করি এটি কমপক্ষে একজন অন্য ব্যক্তিকে সেখানে সহায়তা করবে :)
যদি কোনও স্ট্রিং লিটারেলগুলিতে একটি ভেরিয়েবলের কাছে প্রেরণ করা যায় তবে famous n এর যদি প্রয়োজন হয় তবে নীচে হ্যালো.ব্যাপি স্ক্রিপ্টের মতো একটি কোড লিখতে পারেন :
@echo off
set input=%1
if defined input (
set answer=Hi!\nWhy did you call me a %input%?
) else (
set answer=Hi!\nHow are you?\nWe are friends, you know?\nYou can call me by name.
)
setlocal enableDelayedExpansion
set newline=^
rem Two empty lines above are essential
echo %answer:\n=!newline!%
এইভাবে মাল্টলাইন আউটপুট এক জায়গায় প্রস্তুত হতে পারে এমনকি অন্য স্ক্রিপ্ট বা বাহ্যিক ফাইলের মধ্যেও এবং অন্য জায়গায় মুদ্রিত হতে পারে।
লাইন ব্রেকটি নিউলাইন ভেরিয়েবলে অনুষ্ঠিত হয় । তার মান প্রতিস্থাপিত করা আবশ্যক পর প্রতিধ্বনি লাইন, যাতে আমি ব্যবহার প্রসারিত করা হয় setlocal enableDelayedExpansion বিস্ময়বোধক চিহ্ন যা সঞ্চালনের উপর ভেরিয়েবল প্রসারিত সক্রিয়। এবং এক্সিকিউশনটি নতুন লাইনের বিষয়বস্তুগুলির সাথে \ n প্রতিস্থাপন করে ( সহায়তা সেটে সিনট্যাক্স সন্ধান করুন )। আমরা অবশ্যই নিউলাইন ব্যবহার করতে পারি ! উত্তরটি সেট করার সময় তবে more n আরও সুবিধাজনক। এটি বাইরে থেকে পাস করা যেতে পারে ( হ্যালো আর 2 try nD2 চেষ্টা করুন ) যেখানে লাইন ব্রেকটি ধারণ করে চলকটির নাম কেউ জানে না (হ্যাঁ, হ্যালো সি 3! নিউলাইন! P0 একইভাবে কাজ করে)।
উদাহরণস্বরূপ উপরে একটি সাববুটিন বা একক ব্যাচে পরিমার্জন করা যেতে পারে, যেমন call:mlecho Hi\nI'm your comuter
:
:mlecho
setlocal enableDelayedExpansion
set text=%*
set nl=^
echo %text:\n=!nl!%
goto:eof
দয়া করে মনে রাখবেন যে অতিরিক্ত ব্যাকস্ল্যাশ স্ক্রিপ্টটিকে subst n সাবস্ট্রিংকে বিশ্লেষণ করতে বাধা দেবে না।
এটি আমার পক্ষে কাজ করেছে, কোনও বিলম্বিত সম্প্রসারণের প্রয়োজন নেই:
@echo off
(
echo ^<html^>
echo ^<body^>
echo Hello
echo ^</body^>
echo ^</html^>
)
pause
এটি এইভাবে আউটপুট লিখেছে:
<html>
<body>
Hello
</body>
</html>
Press any key to continue . . .
echo asdf >myfile.txt
সঠিক একই ফলাফল উত্পাদন করবে। echo
স্ট্রিংয়ের শেষে একটি নতুন লাইন যুক্ত করে।
ব্যাচে একটি নতুন লাইন শুরু করতে, আপনাকে যা করতে হবে তা হল "প্রতিধ্বনি [" যুক্ত করা, যেমন:
echo Hi!
echo[
echo Hello!
echo[.bat
echo.
এটিও একটি খারাপ সমাধান।
echo.
। আপনার স্ক্রিপ্টের ব্যবহারকারীদের কেবলমাত্র তাদের সিস্টেমে ফাইল মুছে ফেলা হবে বলে আশা করা আপনার স্ক্রিপ্টটির জন্য একটি নতুন লাইনের প্রয়োজন আমার কাছে ভাল ডিজাইনের মতো শোনাচ্ছে না।
কেন এবং জেব সমাধানগুলি ভাল কাজ করে।
তবে নতুন লাইনগুলি কেবলমাত্র একটি এলএফ অক্ষর দিয়ে তৈরি করা হয়েছে এবং আমার সিআরএলএফ অক্ষর (উইন্ডোজ সংস্করণ) প্রয়োজন।
এটিতে, স্ক্রিপ্টের শেষে, আমি এলএফকে সিআরএলএফতে রূপান্তর করেছি।
উদাহরণ:
TYPE file.txt | FIND "" /V > file_win.txt
del file.txt
rename file_win.txt file.txt
আপনি @echo
(@ কেচো + [স্পেস] + [অনিরাপদ স্থান]) ব্যবহার করতে পারেন
দ্রষ্টব্য: অরক্ষিত স্থানটি Alt + 0160 দিয়ে পাওয়া যাবে
আশা করি এটা সাহায্য করবে :)
হুম আপনি ঠিক বলেছেন, আমার এটি একটি মেকফাইলে দরকার ছিল, এটি সেখানে পুরোপুরি কাজ করে। আমার ধারণা আমার উত্তরটি ব্যাচের ফাইলগুলির সাথে খাপ খায় না ... আমার খারাপ।
ECHO ist eingeschaltet (ON).
একটি খালি লাইন পেলাম না,