ব্যাচ ফাইল কার্যকর করার পরে কেন সিএমডি প্রস্থান করবে না?


25

ব্যাচ ফাইল কার্যকর করার পরে কেন সিএমডি প্রস্থান করবে না?

আমি চেষ্টা করেছি:

"C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -Xmx1024M -Xms1024M -jar Jilko.jar

এবং

@echo off
"C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -Xmx1024M -Xms1024M -jar Jilko.jar
exit

উত্তর:


31

যদি জাভা অ্যাপ্লিকেশনটি সমাপ্ত না হয় (যেমন আপনি জাভা অ্যাপ্লিকেশন চালু করতে ব্যাচ ফাইলটি ব্যবহার করছেন), তবে startএটি চালু করার জন্য কমান্ডটি ব্যবহার করুন : -

start "" "C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -Xmx1024M -Xms1024M -jar Jilko.jar

এটি জাভা অ্যাপ্লিকেশনটি চালু করবে এবং জাভা অ্যাপ্লিকেশনটি শেষ হওয়ার অপেক্ষা না করে ব্যাচ ফাইলটি কার্যকর করবে।


20

ব্যাখ্যা:

এটা যেভাবে কাজ করে; একটি ব্যাচ ফাইল একবারে এক লাইন প্রক্রিয়াজাত করা হয়। প্রতিটি কমান্ড ঘুরিয়ে কার্যকর করা হয় এবং ব্যাচ প্রসেসর পরবর্তী কমান্ড শুরু করার আগে একটি কমান্ড শেষ হওয়ার জন্য অপেক্ষা করে। আপনি যে সমস্যাটি ভোগ করছেন তা হ'ল কারণ আপনি যে জাভা অ্যাপ্লিকেশনটি চালু করছেন (জিলকো.জার) একটি উইন্ডোড প্রোগ্রাম যা এটি চালু হওয়ার পরেও চালিয়ে যেতে থাকে। যদি এটি এমন কোনও সরঞ্জাম ছিল যা কিছু ক্রিয়া সম্পাদন করে এবং তারপরে সমাপ্ত হয়, তবে ব্যাচ ফাইলটি পরবর্তী কমান্ডে চালিয়ে যেতে হবে (বা যদি আরও কিছু না থাকে তবে প্রস্থান করুন)। প্রোগ্রামটি এখনও চলছে বলে, ব্যাচ প্রসেসরটি উইন্ডোটি চালিত হওয়ার আগে বন্ধ না হওয়া পর্যন্ত অপেক্ষা করে। আপনি জাভা প্রোগ্রামটি প্রস্থান করে এটি ক্রিয়াতে দেখতে পাচ্ছেন: ব্যাচের ফাইলের সাথে কনসোল উইন্ডোটি বন্ধ হয়ে যায়।


সমাধান:

এটি ঠিক করার জন্য আপনার যা করা দরকার তা হ'ল ব্যাচ প্রসেসরটিকে প্রোগ্রামটি চালু করার নির্দেশ দিন এবং এটি অপেক্ষা না করেই চালিয়ে যান:

start "" "C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -Xmx1024M -Xms1024M -jar Jilko.jar

হিসাবে Terrance উল্লিখিত , ""শিরোনাম কনসোল উইন্ডো জন্য ব্যবহার হয়। তবে কমান্ডটি উদ্ধৃতিতে না থাকলে এটি কেবলমাত্র esচ্ছিক; অন্যথায় প্রয়োজন । আপনি যদি কিছু পছন্দ করতে চান বা এটি খালি রেখে দিতে পারেন তবে কমান্ডটি উদ্ধৃতিতে উপস্থিত থাকলে অবশ্যই তা উপস্থিত থাকতে হবে, অন্যথায় কমান্ড-ইন্টারপ্রেটার উদ্ধৃত কমান্ডটিকে শিরোনাম হিসাবে বিবেচনা করবে এবং একটি কনসোল খুলবে যা কেবল সেখানে অপেক্ষা করছে waiting কিছু করতে.

পরিবর্তে আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন তবে শর্টনামগুলি প্রতিটি সিস্টেমে একইরূপে গ্যারান্টিযুক্ত না হওয়ায় উদ্ধৃতিগুলি আরও সহজ এবং নিরাপদ।

start C:\Progra~2\Java\jre6\bin\javaw.exe -Xmx1024M -Xms1024M -jar Jilko.jar

startকমান্ড একটি বিল্ট-ইন কমান্ড যে spawns একটি প্রক্রিয়া (মূলত স্টার্ট মেনু থেকে একটি প্রোগ্রাম চলমান মতো)। সুতরাং এই প্রসঙ্গে যা ঘটে তা হ'ল ব্যাচ প্রসেসর startকমান্ডটি চালায় যা ফলস্বরূপ নির্দিষ্ট প্রোগ্রামটি চালায় এবং সমাপ্ত হয় (নিজেই, তৈরি হওয়া প্রোগ্রাম নয়)। যেমনটি, ব্যাচের প্রসেসরটি প্রত্যাশা অনুযায়ী চালিয়ে যায়। এর কিছু বিকল্প রয়েছে যা কার্যকর হতে পারে যেমন প্রোগ্রামটি মিনিমাইজড ( /min) বা সর্বাধিকীকরণ ( /max) চালানো, স্বল্প অগ্রাধিকারে চালানো ( /low) ইত্যাদি। দেখুন start /?বিস্তারিত জানার জন্য।


আমরা ভালো শুরু বিবেচনা করতে পারেন nohup en.wikipedia.org/wiki/Nohup
মুহাম্মদ Hewedy

না (যদি আপনি নোহুপ এবং এর সাথে তুলনা করতে না চান)।
হেনেস

7

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

START প্রোগ্রামটি এটি ঠিক করে তবে START দিয়ে পুরানো সমস্যাটি এখনও প্রায়। আপনি কেবল ব্যবহার করতে পারবেন না:

START "c:\my dir\myfile.exe"

START এর প্রথম প্যারামিটারটি এখনও উইন্ডোর নাম। যদি আপনি এটি বাদ দেন তবে আপনি উইন্ডোটি দিয়ে যা শুরু করার চেষ্টা করেছেন তার নাম দিয়েই কেবল একটি সিএমডি কনসোল বাক্স খুলুন। উপরের উদাহরণে, আমার কাছে এখন " সি: \ আমার দির \ মাইফাইল.এক্সে " এর উইন্ডো শিরোনাম সহ একটি কনসোল উইন্ডো থাকবে । আমি যা চেয়েছিলাম তা নয়!

উইন্ডোর নাম বাদ দিতে, খালি স্ট্রিং সংজ্ঞায়িত করতে ডাবল উদ্ধৃতিগুলির একটি জোড়া ব্যবহার করুন, যেমন:

START "" "c:\my dir\myfile.exe"

অবশেষে, আপনার ব্যাচ ফাইলটি বন্ধ হয় তা নিশ্চিত করার জন্য একটি এক্সিট কমান্ড দিয়ে শেষ করুন।

এই পদ্ধতিটি উইন্ডোজ 7 এবং 8 এ ধারাবাহিকভাবে কাজ করে বলে মনে হচ্ছে।

সমস্যা সমাধানের জন্য, আমি দেখতে পাচ্ছি যে আমি যা করতে চলেছি তার একটি ECHO যুক্ত করা, তারপরে আমি স্রেফ যা করেছি তার একটি টিমিয়ুট অনেক সাহায্য করে। উদাহরণ স্বরূপ:

ECHO I'm about to launch the program...
START "" "c:\my dir\myfile.exe"
TIMEOUT 5

যেহেতু টাইমআউট আপনাকে একটি কাউন্টডাউন দেয়, আপনার ECHO করার দরকার নেই যা আপনি বিলম্ব করতে চলেছেন।


5

এছাড়াও - উইন্ডোজ under এর অধীনে সর্বদা, এক্সিট ব্যবহার করুন , যেমন ব্যাচের ফাইলের শেষে পৌঁছানো অগত্যা এটি শেষ করে না - যেমন উইন্ডোজ সংস্করণগুলির পূর্ববর্তী সংস্করণগুলির মতো। উইন্ডোজ 7 এর আগের এনটি সংস্করণগুলিতে (যেমন উইন্ডোজ 2000 পেশাদার) আরও সংবেদনশীল হতে পারে। এটি কয়েকটিতে উল্লেখ করা হয়েছিল, তবে পূর্ববর্তী সমস্ত উত্তর নয়।

উত্তরটি সমর্থন করার জন্য ব্যক্তিগত অভিজ্ঞতার বিবরণ:

উইন্ডোজ 2000 থেকে উইন্ডোজ 7 এ স্টারঅফিস 5.2 ইনস্টলেশনটি স্থানান্তর করার পরে, স্যুটটি সমাপ্ত করার পরে আমি মেমরি স্পেসের ত্রুটি পেয়েছি। উইন্ডোজ 2000 এ এটি দেখা যায়নি।

বছর আগে, আমি ব্যাচ ফাইলগুলি স্বয়ংক্রিয়ভাবে ব্যাক-আপ এবং soffice.ini পুনরুদ্ধার করার জন্য লিখেছিলাম, এটি যখন দুর্নীতিগ্রস্থ হয়ে যায় তখন মেরামতের অনুমতি দিতে (প্রায়শই সমস্যা হতে পারে - স্যুটটি লোড করতে ব্যর্থ হয়)। স্বয়ংক্রিয় ব্যাকআপ (Office52 \ ব্যবহারকারী \ কনফিগারেশন \ স্টার্টআপে রাখা ব্যাচ ফাইলে একটি লিঙ্ক দ্বারা ট্রিগার) কেবল 5 সেকেন্ডের বিলম্বের পরে ঘটে। আমি লক্ষ্য করেছি যে আমি যখনই ব্যাচ ফাইলটি চালানোর ঠিক আগে স্যুট থেকে বেরিয়ে এসেছি, স্যুটটির সমাপ্তি ত্রুটি ছাড়াই চলে গেছে। এটি আমাকে ব্যাচের ফাইলগুলির একটি সমস্যার দিকে ইঙ্গিত করেছে।

'এক্সিট' কমান্ডটি ব্যাচের ফাইলগুলিতে শেষ লাইন হিসাবে স্থাপনের পরে, অফিস স্যুটটি মেমরি-স্পেস ত্রুটি বার্তাগুলি ছাড়াই শেষ করতে শুরু করেছিল, সর্বদা, ব্যাচ ফাইলগুলি চালিত হয়েছিল কি না।


2

অ্যাপ্লিকেশনটি শেষ হয়ে গেলে, এটি প্রস্থান করা উচিত। আপনি কি নিশ্চিতভাবেই জাভা অ্যাপটি সঠিকভাবে প্রস্থান করছেন?


2

আমি কেবল একই সমস্যাটির সাথে ডিল করছি, এবং অবশেষে এটি ব্যাচফাইলে এলোমেলো পরিবর্তনগুলির মতো মনে হচ্ছে তা তৈরি করার পরে নিজেই সমাধান হয়ে গেল why আমি বুঝতে পারি না তবে পরে এটি অন্য কাউকে সহায়তা করার ক্ষেত্রে আমি এটি এখানে পোস্ট করব।

XP হোম কমান্ডলাইন কার্যকারিতা হিসাবে খুব বেশি অন্তর্ভুক্ত না হওয়ায় আমি সিসইন্টার্নালস সিসকিল ইউটিলিটি এবং স্লিপ ইউটিলিটি ব্যবহার করি।


এটি হ'ল ব্যাচফাইল যা বাস্তব হওয়ার পরে বন্ধ হয়ে যায়:

@echo off
start /min C:\Progra~1\PsTools\pskill.exe explorer.exe
start /min C:\Progra~1\PsTools\pskill.exe Powermenu.exe
start /min C:\Progra~1\PsTools\pskill.exe PWGen.exe
start /min C:\Progra~1\PsTools\pskill.exe redshiftgui.exe
start /min C:\Progra~1\PsTools\pskill.exe clipx.exe
sleep 2
start explorer.exe
sleep 3
start C:\Progra~1\ClipX\clipx.exe
sleep 1
start C:\Progra~1\Powermenu\PowerMenu.exe
sleep 1
start /min C:\Progra~1\PWGen\PWGen.exe
sleep 1
start C:\Progra~1\RedshiftGUI\redshiftgui.exe && exit

যদি আমার শেষ কয়েকটি লাইনগুলি এভাবে পরিবর্তিত হয়ে থাকে, আমি কোণে 'এক্স' ক্লিক না করা পর্যন্ত সিএমডি উইন্ডোটি খোলা থাকবে:

start C:\Progra~1\RedshiftGUI\redshiftgui.exe
sleep 1
start /min C:\Progra~1\PWGen\PWGen.exe && exit

এমনকি যখন আমি নিজে থেকে মারার জন্য পিস্কিল আহ্বান করার চেষ্টা করেছি, তখনও সিএমডি.এক্সই প্রক্রিয়াটি টাস্ক ম্যানেজার থেকে অদৃশ্য হয়ে যায় এবং পিএসকিল তার সেন্টিমিডি.এক্সইয়ের ভিতরে থেকে জানায় যে সেমিডি.এক্সএক্স প্রক্রিয়াটি মারা গেছে, তবুও cmd.exeউইন্ডোটি এখনও অবধি থাকবে আমি কোণে 'এক্স' ক্লিক করেছি:

start C:\Progra~1\RedshiftGUI\redshiftgui.exe
sleep 1
start /min C:\Progra~1\PWGen\PWGen.exe
sleep 1
C:\Progra~1\PsTools\pskill.exe cmd.exe

আমি && exitপ্রতিটি লাইনে যুক্ত হওয়ার পরে আমি লক্ষ্য করেছি যে তাদের মধ্যে কিছু এটির প্রতিক্রিয়া জানিয়েছে এবং ব্যাচ প্রসেসিংয়ে বাধা দেবে- অন্যরা তা না করে would

সুতরাং আমি এটির প্রাথমিকভাবে কীভাবে রেখেছিলাম তার পরিবর্তে আমি কেবল একটি প্রতিক্রিয়াশীল ব্যক্তিকে শেষে রেখেছি।

যেমনটি আমি বলেছি, আমি জানি না কেন, তবে আনন্দিত যে এটি শেষ হয়েছে।


1
এটি এত অপ্রয়োজনীয়
surfasb

&& প্রস্থান আমার পক্ষে কাজ করে
জেককম


0

আমি এটি কীভাবে করেছি তা এখানে:

  1. নিম্নলিখিত বিষয়বস্তু সহ একটি ব্যাচ ফাইল তৈরি করুন:

    java -Xms512M -Xmx512M -jar yourFileName.jar -o true
    EXIT
    
  2. আপনার প্রস্থান প্রস্থান ইনপুট স্ট্রিমের মধ্যে, যুক্ত করুন:

    System.exit(1);
    

0

উইন্ডোজ 2003 এর ডিফল্টরূপে নিয়ন্ত্রণ প্যানেলে কোনও "ব্যবহারকারী অ্যাকাউন্ট" নেই। আমি ব্যবহারকারীর অ্যাকাউন্ট খুলতে একটি ছোট ব্যাচ লিখেছিলাম:

@echo off  
rundll32.exe %SystemRoot%\system32\netplwiz.dll,UsersRunDll  
exit

এটি ঠিক আছে, ব্যবহারকারীর অ্যাকাউন্টগুলি খোলা হয়েছে, তবে সিএমডি উইন্ডোটিও খোলা রয়েছে। এখানে কিছু গবেষণা করার পরে, আমি যুক্ত করেছি: "" "লাইনের 2 এর শুরুতে এভাবে শুরু করুন:

@echo off  
Start "" rundll32.exe %SystemRoot%\system32\netplwiz.dll,UsersRunDll o
exit

এখন ব্যবহারকারীর অ্যাকাউন্টগুলির উইন্ডোটি খোলে, খোলা থাকে এবং সিএমডি উইন্ডোটি বন্ধ হয়। সহজ কিছু.


0

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

ব্যাচ ফাইলের শেষে থেকে প্রস্থানটি সরান এবং ব্যবহার করুন:

Taskkill /IM conhost.exe /F

0

আমি একটি উইন্ডোজ 7 32-বিট মেশিনে নেট ইউজ ব্যাচ ফাইল তৈরি করেছি এবং ব্যাচের ফাইলের সেন্টিমিডি কার্যকর হওয়ার পরে প্রস্থান করবে না। আমি একই ব্যাচ ফাইলটি অন্য একটি উইন্ডোজ 7 -৪-বিট মেশিনে চালিত করি এবং ব্যাচ ফাইলের সিএমডি সাধারণভাবে প্রস্থান করি।

আমি ব্রায়ানের পরামর্শ চেষ্টা করেছিলাম এবং এটি উইন্ডোজ 7 32-বিট মেশিনে কাজ করে না কারণ কোন কনহস্ট.অ্যাক্স প্রক্রিয়া ছিল না তাই আমি এটিকে নিম্নরূপে সংশোধন করেছি:

Taskkill /IM cmd.exe /F

নেট ব্যবহার ব্যাচ ফাইল সর্বদা স্বাভাবিকভাবে প্রস্থান করে না এবং এটি এলোমেলোভাবে "টার্মিনেট ব্যাচ জব (ওয়াই / এন)" নিশ্চিতকরণ দেখায় ।

এই থ্রেড অনুযায়ী আমি ব্যাচ ফাইলটি নিম্নরূপে সংশোধন করেছি:

@echo off

if "%~1"=="-FIXED_CTRL_C" (
   REM Remove the -FIXED_CTRL_C parameter
   SHIFT
) ELSE (
   REM Run the batch with <NUL and -FIXED_CTRL_C
   CALL <NUL %0 -FIXED_CTRL_C %*
   GOTO :EOF
)

net use \\Server\folder

Taskkill /IM cmd.exe /F

নেট ব্যবহার ব্যাচ ফাইলটি শেষ পর্যন্ত স্বাভাবিকভাবে প্রস্থান করে।

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