একটি ব্যাচের ফাইলে ঘুমাচ্ছেন


151

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

@ping 127.0.0.1 -n 2 -w 1000 > nul
@ping 127.0.0.1 -n %1% -w 1000> nul

তারপরে আপনি আপনার নিজস্ব ব্যাচ ফাইলে অপেক্ষা করার জন্য কলগুলি অন্তর্ভুক্ত করতে পারেন, ঘুমাতে সেকেন্ডের সংখ্যায় গিয়ে।

স্পষ্টতই উইন্ডোজ 2003 রিসোর্স কিটটি ইউনিক্সের মতো স্লিপ কমান্ড সরবরাহ করে (শেষ পর্যন্ত!) এরই মধ্যে, আমরা এখনও উইন্ডোজ এক্সপি, উইন্ডোজ 2000 বা (দুঃখজনকভাবে) উইন্ডোজ এনটি ব্যবহার করছি , এর চেয়ে ভাল উপায় আর কি আছে?

আমি স্বীকৃত উত্তরেsleep.py স্ক্রিপ্টটি পরিবর্তন করেছি , যাতে কমান্ড লাইনে কোনও যুক্তি পাস না করা হলে এটি এক সেকেন্ডে ডিফল্ট হয়:

import time, sys

time.sleep(float(sys.argv[1]) if len(sys.argv) > 1 else 1)

উইন্ডোজ 2003 রিসোর্স কিটের মাইক্রোসফ্ট ডাউনলোড পৃষ্ঠাটি ইঙ্গিত করে যে এটি এক্সপির জন্যও কাজ করে। আমি আশঙ্কা করছি অপেক্ষার জন্য 'বাহ্যিক' ইউটিলিটি ব্যবহার করা ছাড়া আর কোনও উপায় নেই: এক্সপি কমান্ড প্রসেসরের মধ্যে তৈরির মতো আর কিছুই নেই।
GerG

2003 সার্ভারের রিসোর্স কিটটি উইন্ডোজ এক্সপি (এবং সম্ভবত ডাব্লু 2 কে দিয়ে) নিয়ে কাজ করে
মার্টিন বেকেট

আমি অতীতেও একই সমস্যার মুখোমুখি হয়েছি এবং নিজেকে পিং ব্যবহার করেছি (উপরে একটি মন্তব্য দিয়ে স্পষ্ট করে নথিভুক্ত করেছি যে আমি বুঝতে পারি যে এটি বোকা :))।
জ্যাক নীচে


2
আপনার কয়েকটি বিকল্প রয়েছে - pingকমান্ডটি সহ একটি ঘুম অনুকরণ করুন , বা উইন্ডো রিসোর্স কিটটি ডাউনলোড করুন যাতে একটি sleepকমান্ড অন্তর্ভুক্ত রয়েছে । এখানে আরও বিশদ: ব্যাচ ফাইল
স্লিপ

উত্তর:


14

হালনাগাদ

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

পুরানো উত্তর

যদি আপনি পাইথন ইনস্টল করে থাকেন বা এটি ইনস্টল করতে আপত্তি করেন না (এটির অন্যান্য ব্যবহারগুলিও রয়েছে :), কেবল নীচের স্লিপ.পি স্ক্রিপ্টটি তৈরি করুন এবং এটি আপনার রাস্তায় কোথাও যুক্ত করুন:

import time, sys

time.sleep(float(sys.argv[1]))

এটি উপ-দ্বিতীয় বিরতিগুলিকে অনুমতি দেবে (উদাহরণস্বরূপ, 1.5 সেকেন্ড, 0.1, ইত্যাদি), আপনার যদি এমন প্রয়োজন হয়। যদি আপনি এটির sleepপরিবর্তে কল করতে চান sleep.pyতবে আপনি .PYনিজের পাঠ্য পরিবেশের পরিবর্তনশীলটিতে এক্সটেনশনটি যুক্ত করতে পারেন । উইন্ডোজ এক্সপিতে আপনি এটিকে সম্পাদনা করতে পারবেন:

আমার কম্পিউটার → বৈশিষ্ট্য (মেনু) → উন্নত (ট্যাব) → পরিবেশ পরিবর্তনশীল (বোতাম) → সিস্টেম ভেরিয়েবল (ফ্রেম)


32
ব্যাচ-স্ক্রিপ্টযোগ্য সমাধানের অনুরোধ করা হলে অজগরে স্ক্রিপ্ট লিখব কেন? উইন্ডোজ ব্যবহারকারীদের কাছে পাইথন ইন্টারপ্রেটার ইনস্টল করা নেই এমন সমস্যা কীভাবে পাথ এক্সটেনশন সমাধান করতে পারে? ধন্যবাদ।
Val,

6
বহনযোগ্যতার জন্য, আমি মনে করি যে সমাধানটি এড়ানো উচিত কারণ পুরোপুরি সূক্ষ্ম নেটিভ বিকল্প রয়েছে।
গ্রাস ডাবল

1
এই পদ্ধতির আগে অতীতে একটি সমাধান দেওয়া হতে পারে, কিন্তু @ ব্লগবার্ড দ্বারা বর্ণিত নেটিভ সমাধান অবশ্যই যাওয়ার উপায়।
মাইক

227

timeoutকমান্ড অগ্রে উইন্ডোজ ভিস্তা থেকে পাওয়া যায়:

c:\> timeout /?

TIMEOUT [/T] timeout [/NOBREAK]

Description:
    This utility accepts a timeout parameter to wait for the specified
    time period (in seconds) or until any key is pressed. It also
    accepts a parameter to ignore the key press.

Parameter List:
    /T        timeout       Specifies the number of seconds to wait.
                            Valid range is -1 to 99999 seconds.

    /NOBREAK                Ignore key presses and wait specified time.

    /?                      Displays this help message.

NOTE: A timeout value of -1 means to wait indefinitely for a key press.

Examples:
    TIMEOUT /?
    TIMEOUT /T 10
    TIMEOUT /T 300 /NOBREAK
    TIMEOUT /T -1

দ্রষ্টব্য: এটি ইনপুট পুনঃনির্দেশের সাথে কাজ করে না - তুচ্ছ উদাহরণ:

C:\>echo 1 | timeout /t 1 /nobreak
ERROR: Input redirection is not supported, exiting the process immediately.

8
কনসোল-কম ব্যবহারগুলিতে কাজ করে না: "ত্রুটি: তাত্ক্ষণিকভাবে প্রক্রিয়াটি প্রস্থান করে, ইনপুট পুনঃনির্দেশ সমর্থিত নয়।"
সরল ব্যবহারকারী

আমি বোঝাতে চেয়েছি যেগুলি আপনার কাছে কোনও কনসোল নেই, যেমন ব্যাচ ফাইলটি যখন অন্য কোনও প্রক্রিয়া থেকে কাঁটাচামচ করে একটি সাইগউইন ক্রন্টব বা রিমোট
এসএসএস

1
ওহ হ্যাঁ আমি জানি আমি যে উদাহরণটি
দিয়েছি তা

3
লিংক এর জন্য ডকুমেন্টেশন timeout, @Cristian Ciupitu দ্বারা যোগ আংশিকভাবে ভুল হয় - উইন্ডোজ এক্সপি এই কমান্ড নেই।
মার্টিনিউ

1
@ হেলো ওয়ার্ল্ড যা আপনার% PATH% এর সাথে কোনও সমস্যার মতো বলে মনে হচ্ছে
ব্লারগবার্ড

21

pingবর্ণিত হিসাবে পদ্ধতিটি ব্যবহার করা হ'ল আমি যখন আরও এক্সিকিউটেবল যুক্ত করতে বা অন্য কোনও সফ্টওয়্যার ইনস্টল করতে না পারি (বা চাই না) তখন আমি কীভাবে এটি করি।

আপনি কিছু যে নয় pinging করা উচিত, এবং ব্যবহার -wপতাকা যাতে এটি সময় যে পরিমাণ পর ব্যর্থ হয়, কিছু pinging না যে হয় সেখানে (স্থানীয় হোস্ট মত) -nবার। এটি আপনাকে একটি সেকেন্ডের চেয়েও কম সময় পরিচালনা করতে দেয় এবং আমি মনে করি এটি কিছুটা সঠিক।

যেমন

(পরীক্ষা করুন যে 1.1.1.1 নেওয়া হয়নি)

ECHO Waiting 15 seconds

PING 1.1.1.1 -n 1 -w 15000 > NUL
  or
PING -n 15 -w 1000 127.1 >NUL

তাত্ক্ষণিকভাবে PING: transmit failed. General failure.
ফিরুন

আইপি 1.1.1.1ক্লাউডফ্লেয়ার দ্বারা নেওয়া হয়, সুতরাং এটি 15 সেকেন্ড অপেক্ষা করবে না তবে কিছু এমএসের আশেপাশে।
dhcgn

16

SLEEP.exeবেশিরভাগ রিসোর্স কিটগুলির মধ্যে অন্তর্ভুক্ত করা হয়েছে যেমন উইন্ডোজ সার্ভার 2003 রিসোর্স কিট যা উইন্ডোজ এক্সপি তেও ইনস্টল করা যেতে পারে।

Usage:  sleep      time-to-sleep-in-seconds
        sleep [-m] time-to-sleep-in-milliseconds
        sleep [-c] commited-memory ratio (1%-100%)

15

আমি এখানে যে উত্তরগুলি পেয়েছি তার সাথে আমি একমত নই।

ব্যাচ ফাইলে দেরি করার জন্য আমি উইন্ডোজ এক্সপি সক্ষমতার উপর ভিত্তি করে নিম্নলিখিত পদ্ধতিটি সম্পূর্ণভাবে ব্যবহার করি:

DELAY.BAT:

@ECHO OFF
REM DELAY seconds

REM GET ENDING SECOND
FOR /F "TOKENS=1-3 DELIMS=:." %%A IN ("%TIME%") DO SET /A H=%%A, M=1%%B%%100, S=1%%C%%100, ENDING=(H*60+M)*60+S+%1

REM WAIT FOR SUCH A SECOND
:WAIT
FOR /F "TOKENS=1-3 DELIMS=:." %%A IN ("%TIME%") DO SET /A H=%%A, M=1%%B%%100, S=1%%C%%100, CURRENT=(H*60+M)*60+S
IF %CURRENT% LSS %ENDING% GOTO WAIT

আপনি গণনাতে দিনটিও সন্নিবেশ করতে পারেন তাই দেরি বিরতি মধ্যরাতের উপর দিয়ে যাওয়ার সময় পদ্ধতিটিও কাজ করে।


15
এটি সঠিক হওয়া উচিত, তবে এটি সম্পর্কে যাওয়ার জন্য এটি একটি সিপিইউ নিবিড় উপায়। সাধারণত আপনি একটি ইন্টারুপ্ট চালিত বাস্তবায়ন চান যাতে প্রক্রিয়াটি অপেক্ষা করার সময় সিপিইউ চক্র গ্রহণ না করে। এটি খুব কম সংক্ষিপ্ত অপেক্ষার জন্য সমস্যা হওয়া উচিত নয়, সম্ভবত বেশিরভাগ ব্যাচের পরিস্থিতিগুলির ক্ষেত্রে এটি। তবে দীর্ঘ অপেক্ষার সাথে অবিচ্ছিন্নভাবে চলমান প্রক্রিয়াটি সিস্টেমের কার্যক্ষমতায় বিরূপ প্রভাব ফেলতে পারে।
dbenham

4
যেমন এটি সিস্টেমের ঘড়ি ব্যবহার করে যথার্থতাটি এক সেকেন্ড। যদি 2 সেকেন্ড নির্দিষ্ট করা থাকে, তবে বিলম্ব 2 সেকেন্ড থেকে 3 সেকেন্ডের মধ্যে (আসলে 2.99999 ... সেকেন্ড) হতে পারে anything
পিটার মর্টেনসেন

সময় যদি এখন 7:59:59 হয় এবং আপনি 7 সেকেন্ড অপেক্ষা করতে চান? দেখে মনে হচ্ছে এটি এটি বিবেচনায় নেয় না।
ashes999

এটি সিস্টেমের সময় গণনার চেয়ে বেশি সিপিইউ সময় নেয়। এছাড়াও আপনি অষ্টাল সংখ্যার সাথে পাটিগণিত ক্রিয়াকলাপ করছেন, যেহেতু 10 এর চেয়ে কম মিনিট এবং সেকেন্ডগুলি TIMEকমান্ডের শীর্ষস্থানীয় 0 দিয়ে প্রদর্শিত হয় ।
Andreas

2
@ মিঃআরটি: সমস্যাটি হ'ল আপনার %TIME%পয়েন্টের পরিবর্তে শতভাগকে আলাদা করার জন্য কমা ব্যবহার করুন! কেবল একটি কমা যুক্ত করুন DELIMS=:.,"...
আছিনী

13

আমি একই ধরণের সমস্যার মুখোমুখি হয়েছি, তবে একই কাজটি করার জন্য আমি খুব ছোট একটি সি ++ কনসোল অ্যাপ্লিকেশনটি ছুঁড়েছি। শুধু মাইস্লিপ.এক্সজি 1000 চালান - পুরো রিসোর্স কিটটি ডাউনলোড / ইনস্টল করার চেয়ে সম্ভবত সহজ easier

#include <tchar.h>
#include <stdio.h>
#include "Windows.h"

int _tmain(int argc, _TCHAR* argv[])
{
    if (argc == 2)
    {
        _tprintf(_T("Sleeping for %s ms\n"), argv[1]);
        Sleep(_tstoi(argv[1]));
    }
    else
    {
        _tprintf(_T("Wrong number of arguments.\n"));
    }
    return 0;
}

10

সার্ভার ফল্ট এ একই ধরণের প্রশ্ন জিজ্ঞাসা করা হয়েছিল , এবং এর সমাধানটি ছিল:

choice /d y /t 5 > nul

7
এফওয়াইআই: পছন্দটি উইন্ডোজ এক্সপিতে অন্তর্ভুক্ত নয়। এটি উইন্ডোজ 9x এ ছিল, এক্সপি থেকে সরানো এবং ভিস্তার জন্য আবার যুক্ত করা হয়েছিল।
ডেভিন বার্ক

7
আমি এটি মোটেই সুপারিশ করি না। কমপক্ষে CHOICEআমি জানি সমস্ত সংস্করণগুলিতে, যদি কেউ অপেক্ষা করার সময় কোনও বোতামটি হিট করে, যা অধৈর্য লোকেরা মাঝে মাঝে করে, তবে পছন্দটি একটি ইনপুট নিবন্ধন করবে, একটি খারাপ ইনপুট জন্য একটি সিস্টেম বীপ দেবে, এবং কাউন্টডাউন টাইমার থামিয়ে দেবে, যার অর্থ এটি স্তব্ধ হয়ে যাবে সেখানে তারা এন বা ওয়াইকে ধাক্কা দেয় না করে এবং যদি তারা কেবলমাত্র এই দুটির মধ্যে একটির দিকে ধাক্কা দেয় তবে 5 এর জন্য অপেক্ষা না করে পছন্দটি ঠিক সেখানেই শেষ হয় Also এছাড়াও, এই পছন্দটি সত্যই অদ্ভুত ভিস্তার সিনট্যাক্স ব্যবহার করছে। সমস্ত সাধারণ পছন্দ কমান্ড এর পরিবর্তে এটি ব্যবহার CHOICE /T:Y,5 > NULকরবে। /Dপুরানো সংস্করণগুলিতে কোনও পতাকা নেই ।
স্টাইল সহ কোডিং

1
এটিকে বন্ধ করে দেওয়ার জন্য, কমপক্ষে আমার জানা কমান্ডগুলির আলাদা আলাদা ডিফল্ট হ্যাঁ / এতে কোন ভাষা এসেছে সেটির উপর ভিত্তি করে বোতাম নেই, সুতরাং যদি আপনি কোনও স্পষ্টভাবে /C:YNবা ঠিক এর সাথে নির্দিষ্ট করার পরিবর্তে কোনও ডিফল্ট [ওয়াই, এন] পছন্দ উপর নির্ভর করতে থাকেন তবে/C:Y , কেউ কাজ করে না যখন বলুন, একটি সুইডিশ পছন্দ কমান্ড যা সম্ভবত একটি [জে, এন] ডিফল্টরূপে করবে। সুতরাং এটি সমস্ত প্রকারের সমস্যায় জর্জরিত।
সাথে স্টাইল সহ কোডিং

1
@ কোডিং এটি উইন 7-এ পরীক্ষিত হয়েছে এবং ব্যবহারকারী যদি একটি বোতাম টিপায় তবে এটি বীপ করবে, তবে এটি ব্যবহারকারী একটি বোতাম টিপে যাওয়ার পরে অতিরিক্ত 5 সেকেন্ড পরে সময়সীমা শেষ করবে। সুতরাং যদি ব্যবহারকারী কীগুলি টিপতে থাকে তবে এটি কখনই শেষ হয়ে যায় না। এছাড়াও, আমার ক্ষেত্রে, আমি এটি ব্যবহার করার সময়, আমি বিশ্বাস করি যে কনসোলটি লুকান, যাতে ব্যবহারকারী বোতামটি টিপতে না পারে। এই সিস্টেমে পাইথনে অ্যাক্সেস ছিল না, সিস্টেমে আমার নিজস্ব এক্সি ছাড়ার কোনও অ্যাক্সেস ছিল না (যেমন কিছু অন্যান্য উত্তরে বলা হয়েছিল), আমি যা করতে পারি তাতে আমি বেশ সীমাবদ্ধ ছিলাম। সুতরাং, আপনি কি সুপারিশ করবেন?
mlsteeves

@mlsteeves প্রতিটি ভিন্ন উইন্ডোজ, ডস ইত্যাদির একটি আলাদা পছন্দ কমান্ড রয়েছে এবং যেমনটি উল্লেখ করা হয়েছে এটি সাধারণত এক্সপি তে উপলব্ধ নয়। অনেক পছন্দ কমান্ডের subtly ভিন্ন আচরণ এবং কিছু এমনকি বিভিন্ন সিনট্যাক্স আছে। আমি, যখন আমার ঘুমের প্রয়োজন হয় তখন আমি সাধারণত পিং কমান্ডটি ব্যবহার করি। এটি কুরুচিপূর্ণ, তবে নির্ভরযোগ্য।
স্টাইল সহ কোডিং

9

আপনি Windows ব্যবহার করতে পারে cscript WSH স্তর এবং এই wait.js জাভাস্ক্রিপ্ট ফাইল:

if (WScript.Arguments.Count() == 1)
    WScript.Sleep(WScript.Arguments(0)*1000);
else
    WScript.Echo("Usage: cscript wait.js seconds");

1
যদিও উইন্ডোজ স্ক্রিপ্টিং হোস্টটি গ্রুপ নীতিগুলির মাধ্যমে অক্ষম করা যেতে পারে।
জোয়

8

আপনার সামঞ্জস্যতা প্রয়োজনীয়তার উপর নির্ভর করে হয় ব্যবহার করুন ping:

ping -n <numberofseconds+1> localhost >nul 2>&1

যেমন 5 সেকেন্ড অপেক্ষা করুন, ব্যবহার করুন

ping -n 6 localhost >nul 2>&1

বা উইন্ডোজ 7 বা তারপরে ব্যবহার করুন timeout:

timeout 6 >nul

2
-wমিলি সেকেন্ডে হয়, -nপিংয়ের জন্য কেবলমাত্র সংখ্যা এবং পিংসের মধ্যে ডিফল্ট সময়টি দ্বিতীয় হয়।
জয়ে

8

আপনি পিং ব্যবহার করতে পারেন:

ping 127.0.0.1 -n 11 -w 1000 >nul: 2>nul:

এটি 10 ​​সেকেন্ড অপেক্ষা করবে।

আপনার 11 টি ব্যবহার করার কারণ হ'ল প্রথম পিংটি তাত্ক্ষণিকভাবে বাইরে চলে যায়, এক সেকেন্ডের পরে নয়। আপনি যে সেকেন্ড অপেক্ষা করতে চান তার চেয়ে সংখ্যাটি সর্বদা এক হওয়া উচিত be

মনে রাখবেন যে এর উদ্দেশ্যটি -wএক সেকেন্ড অপেক্ষা করা নয়। এটা তোলে তা নিশ্চিত করার জন্য আপনি কোন অপেক্ষা নেই আরো ঘটনা সেখানে নেটওয়ার্ক সমস্যার আছে তুলনায় এক সেকেন্ড। pingনিজে থেকে প্রতি সেকেন্ডে একটি আইসিএমপি প্যাকেট প্রেরণ করবে। এটি সম্ভবত স্থানীয় হোস্টের জন্য প্রয়োজন হয় না, তবে পুরানো অভ্যাসগুলি খুব মরে যায়।


সমালোচনামূলক রিয়েল-টাইম প্রসেসিংয়ের জন্য এটি ব্যবহার করার পরামর্শ দেওয়া হয় না। কারণ পিং কমান্ডটি ব্যবহার করা হচ্ছে, সম্ভবত এই ওয়েট ব্যাচ ফাইলটি কয়েক মিলি সেকেন্ডের মধ্যে চলে যেতে পারে
ওয়েয়েল ডাললুল

12
@ হুইল, আপনি যদি এক-সেকেন্ডের সীমানায় অপেক্ষা করার কথা বলছেন তবে কয়েক মিলিসেকেন্ড অপ্রাসঙ্গিক হবে। এবং যদি আপনি রিয়েলটাইম
স্টাফগুলির জন্য সেমিডি.এক্সএক্স

- আমরা একটি সময়সীমা মান। উত্তরটির জন্য অপেক্ষা করা মিলিসেকেন্ডের সংখ্যা ... পিংসের মাঝে অপেক্ষা করার সময় নয়
কোউজ

@ কুইকস, আমি কোথাও সময়সামগ্রী -wছিলাম না (যদিও আমি কিছু স্বীকার করতে পারি যে আমার স্পষ্টতার অভাবের কারণে), এটি আসলে চক্রের সময় সীমাবদ্ধ করতে ব্যবহৃত হয় যেখানে নেটওয়ার্কের সমস্যা রয়েছে যার ফলে প্রতিটি চক্র তার বরাদ্দকৃতের চেয়ে বেশি সময় নেয় দ্বিতীয়। এটি স্পষ্ট করার জন্য আমি শেষে একটি অনুচ্ছেদ যুক্ত করেছি।
paxdiablo

সমস্যাটি হ'ল যদি পিংগুলি দ্রুত ফিরে আসে তবে আপনি পিংসের মধ্যে পুরো এক সেকেন্ড অপেক্ষা করতে পারেন না। সুতরাং আপনার অপেক্ষা লুপটি আপনার
ভাবার

7

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

192.0.2.0/24 - এই ব্লকটি ডকুমেন্টেশন এবং উদাহরণ কোডে ব্যবহারের জন্য "টেস্ট-নেট" হিসাবে বরাদ্দ করা হয়েছে। এটি প্রায়শই ডোমেইন নামগুলির সাথে مثال হিসাবে ..com বা বিক্রেতা এবং প্রোটোকল ডকুমেন্টেশনে উদাহরণ.net ব্যবহার করা হয়। এই ব্লকের ঠিকানাগুলি জনসাধারণের ইন্টারনেটে প্রদর্শিত হবে না।

123 মিলিসেকেন্ডের জন্য ঘুমাতে, ব্যবহার করুন ping 192.0.2.1 -n 1 -w 123 >nul


হ্যাঁ, প্যারামিটারে একটি যুক্ত করার চেয়ে এটি লিখতে এবং বুঝতে সহজ -n
পিটার মর্টেনসেন

তবে, আমি এটি পরিমাপ করেছি (100 পিংস ব্যবহার করে)। যদি আমি -n 3 -w 124 ব্যবহার করি তবে আসল সময়টি হ'ল (3 + 1) * (124 + 1) = 4 * 125 = 500 এমএস। সময়টি আশ্চর্যজনকভাবে স্থিতিশীল, রিডআউটে 10 মাইল রেজোলিউশনের সাথে সঠিক (সময়ের সাথে সাথে একটি সিএমডি প্রম্পট দ্বারা) - এবং অন্তর্নিহিত রেজোলিউশনটি অবশ্যই 10 এমএসের চেয়ে ভাল (সাধারণত 16 এমএস টিক রেজোলিউশনের দ্বারা প্রভাবিত হয় না)।
পিটার মর্টেনসেন

@ মাফু যে 192.0.2.0/24 ব্যবহার করা উচিত নয় এর অর্থ এটি ব্যবহার করা যাবে না এবং তাই ইকো রিকোয়েস্ট (গুলি) এর কোনও উত্তর নেই এমনটি সত্যই গ্যারান্টিযুক্ত নয়। উদাহরণস্বরূপ যে কোনও উইন্ডোজ পিসির জন্য স্থির আইপিভি 4 ঠিকানা 192.0.2.1 এবং সাবনেট মাস্ক 255.255.255.0 কনফিগার করুন এবং নেটওয়ার্ক অ্যাডাপ্টারটিকে অন্য কোনও ডিভাইসে সংযুক্ত করুন। একটি সাধারণ স্যুইচ যথেষ্ট যার উপর আর কিছুই সংযুক্ত নেই। তারপরে ping 192.0.2.1এই উইন্ডোজ পিসিতে চালান এবং এটি দেখা যায় যে উইন্ডোজ টিসিপি / আইপি স্ট্যাকের প্রতিধ্বনি অনুরোধগুলিতে জবাব দেয়। কত লোক জানেন যে 192.0.2.0/24 টি স্ট্যাটিক আইপিভি 4 ঠিকানার জন্য ব্যবহার করা উচিত নয়?
মফি

1
এখানে মন্তব্যে আলোচনার ভিত্তিতে, মনে হয় 1922.0.2.1 সমস্ত বোকা নয় এবং কেউ কেউ 127.255.255.255 এর চেয়ে ভাল পছন্দ বলে মনে করছেন। থটস?
জেএলআরিশ

মন্তব্য উপরে পোস্টে উল্লেখ এখন (সম্ভবত NLN হিসাবে) সরিয়ে দেওয়া হয়েছে, কিন্তু আমি পরিবর্তন সাথে একমত হবে 127.255.255.255এটা যা ইতিমধ্যে ডিফল্টরূপে নির্ধারিত হয় উইন্ডোজে একটি সম্প্রচার লুপব্যাক ঠিকানা হচ্ছে কারণে (আপনি চালিয়ে এই নিশ্চিত করতে পারেন route printমধ্যে সেন্টিমিডি এবং IPv4 রুট টেবিলটি সন্ধান করে এটি মুদ্রণ করে)।
হপ্পিপ্পিয়ান্ট

6

আপনি যদি আপনার সিস্টেমে পাওয়ারশেল পেয়ে থাকেন তবে আপনি কেবল এই আদেশটি কার্যকর করতে পারেন:

powershell -command "Start-Sleep -s 1"

সম্পাদনা করুন: অনুরূপ থ্রেডে আমার উত্তর থেকে , লোকেরা একটি ইস্যু উত্থাপন করেছে যেখানে পাওয়ারশেল শুরু হতে কত সময় নেয় আপনি তার অপেক্ষা করার চেয়ে কতটা সময় অপেক্ষা করছেন তা তুলনায় তাৎপর্যপূর্ণ। যদি অপেক্ষা সময়ের যথার্থতা গুরুত্বপূর্ণ হয় (যেমন দ্বিতীয় বা দুটি অতিরিক্ত বিলম্ব গ্রহণযোগ্য নয়), আপনি এই পদ্ধতির ব্যবহার করতে পারেন:

powershell -command "$sleepUntil = [DateTime]::Parse('%date% %time%').AddSeconds(5); $sleepDuration = $sleepUntil.Subtract((get-date)).TotalMilliseconds; start-sleep -m $sleepDuration"

উইন্ডোজ কমান্ড জারি হওয়ার পরে এটি সময় নেয় এবং পাওয়ারশেল স্ক্রিপ্টটি সেই সময়ের পরে 5 সেকেন্ড পর্যন্ত ঘুমায়। সুতরাং যতক্ষণ পাওয়ারশেল আপনার ঘুমের সময়কালের চেয়ে শুরু করতে কম সময় নেয়, এই পদ্ধতির কাজ হবে (এটি আমার মেশিনে প্রায় 600 মিমি)।


6
timeout /t <seconds> <options>

উদাহরণস্বরূপ, স্ক্রিপ্টটি একটি নিরবচ্ছিন্ন 2-সেকেন্ড অপেক্ষা করতে করতে:

timeout /t 2 /nobreak >NUL

যার অর্থ স্ক্রিপ্টটি চালিয়ে যাওয়ার আগে 2 সেকেন্ড অপেক্ষা করবে।

ডিফল্টরূপে, একটি কীস্ট্রোক সময়সীমা বাধা দেয়, তাই /nobreakআপনি যদি ব্যবহারকারীটি অপেক্ষাটি বাধা দিতে (বাতিল) করতে না চান তবে স্যুইচটি ব্যবহার করুন। তদুপরি, সময়সীমা ব্যবহারকারীকে অবধি জানাতে যে কতক্ষণ অপেক্ষা করতে বাকি রয়েছে তা প্রতি সেকেন্ডে বিজ্ঞপ্তি সরবরাহ করবে; কমান্ডটি পাইপ করে এটি সরানো যেতে পারে NUL

সম্পাদনা: @ মার্টিনেউ মন্তব্যগুলিতে যেমন উল্লেখ করেছেন , timeoutকমান্ডটি কেবল উইন্ডোজ 7 এবং তারপরে উপলব্ধ। তদুপরি, pingকমান্ডটি প্রসেসরের চেয়ে কম সময় ব্যবহার করে timeout। আমি এখনও timeoutসম্ভব যেখানে ব্যবহার করতে বিশ্বাস করি , যদিও এটি ping'হ্যাক' এর চেয়ে বেশি পঠনযোগ্য । এখানে আরও পড়ুন ।


2
স্পষ্টতই এই আদেশটি কেবল উইন্ডোজ 7/2008 এবং এক্সপি রিসোর্স কিট (এবং সম্ভবত 8 / 8.1) এ উপলব্ধ। উত্সটিও দাবি করেছে যে pingপদ্ধতিটি কম প্রসেসরের সময় ব্যবহার করে।
মার্টিনো

5

আপনার ব্যাচ ফাইলে কেবল এটি রাখুন যেখানে আপনি অপেক্ষা করতে চান।

@ping 127.0.0.1 -n 11 -w 1000 > null

প্যাক্সিডিয়াবলোর উত্তর থেকে এটি কীভাবে আলাদা?
পিটার মর্টেনসেন

2
এটি আলাদা নয়, তবে এখানে উত্তরগুলি একাধিক একত্রীভূত প্রশ্ন থেকে নেওয়া, সুতরাং আমি উত্তর দিলে সমস্ত উত্তর উপস্থিত থাকে না।
ব্রেন্ট স্টুয়ার্ট

4

নোটপ্যাডে, লিখুন:

@echo off
set /a WAITTIME=%1+1
PING 127.0.0.1 -n %WAITTIME% > nul
goto:eof

এখন C: I উইন্ডোজ \ System32 ফোল্ডারে ওয়েটব্যাট হিসাবে সংরক্ষণ করুন, তারপরে আপনি যখনই অপেক্ষা করতে চান, ব্যবহার করুন:

CALL WAIT.bat <whole number of seconds without quotes>

এটি বার বার পিং করে, প্রতিটি পিংয়ের মধ্যে একটি সেকেন্ডের জন্য অপেক্ষা করে এবং তারপরে এটি কলিং প্রোগ্রামে ফিরে আসে, আমি অসীম লুপটি দেখতে পাই না তবে আমি নিজে এটি পরীক্ষা করে দেখেছি।
সুপারকেল

আমার ভুল, কোন অসীম লুপ নেই। তবে অন্য উত্তরের একটি হিসাবে যেমন উল্লেখ করা হয়েছে , pingকেবল একবারই নয় এটির পক্ষে ভাল এবং পুরো নম্বর-অফ-পুনরায় চেষ্টা -w Timeoutকরার পরিবর্তে বিলম্ব-সময়ের জন্য মিলিসেকেন্ডে -n Countবিকল্পটি ব্যবহার করুন।
মার্টিনিউ

-w Timeoutআরও ভাল হতে পারে তবে আমি এটি নিশ্চিত করেছিলাম যে এটি প্রবেশের সময়ের চেয়ে আরও একবার সময় দেয়।
সুপারকেল

4

রিসোর্স কিট সবসময় এই অন্তর্ভুক্ত করেছে। কমপক্ষে উইন্ডোজ 2000 এর পরে।

এছাড়াও, সাইগউইন প্যাকেজটির একটি রয়েছে sleep- cygwin.dllএটি আপনার পথের মধ্যে পড়ে এবং এতে (বা যা বলা হয়) এবং যাওয়ার উপায় অন্তর্ভুক্ত করে!


2
নোট করুন যে cygwin1.dll শান্তিপূর্ণভাবে নিজের বিভিন্ন সংস্করণের সাথে সহাবস্থান করে না। আপনার মেশিনে আপনার আরও একটি এবং কেবল একটি সাইগুইন 1.ডিএল থাকে, বা আপনি অদ্ভুত ব্যর্থতা পাবেন।
জেস্পের

কোন রিসোর্স কিট? একের বেশি বলে মনে হচ্ছে। আপনি আপনার উত্তর আপডেট করতে পারেন?
পিটার মর্টেনসেন

3

আমি আছিনীর প্রতিক্রিয়া পছন্দ করি । আমি দিনটি পরিচালনা করতে এটিতে যুক্ত করেছিলাম এবং এটি শতকরা সেকেন্ডে ( %TIME%আউটপুটগুলি H:MM:SS.CC) পরিচালনা করতে সক্ষম করেছিলাম :

:delay
SET DELAYINPUT=%1
SET /A DAYS=DELAYINPUT/8640000
SET /A DELAYINPUT=DELAYINPUT-(DAYS*864000)

::Get ending centisecond (10 milliseconds)
FOR /F "tokens=1-4 delims=:." %%A IN ("%TIME%") DO SET /A H=%%A, M=1%%B%%100, S=1%%C%%100, X=1%%D%%100, ENDING=((H*60+M)*60+S)*100+X+DELAYINPUT
SET /A DAYS=DAYS+ENDING/8640000
SET /A ENDING=ENDING-(DAYS*864000)

::Wait for such a centisecond
:delay_wait
FOR /F "tokens=1-4 delims=:." %%A IN ("%TIME%") DO SET /A H=%%A, M=1%%B%%100, S=1%%C%%100, X=1%%D%%100, CURRENT=((H*60+M)*60+S)*100+X
IF DEFINED LASTCURRENT IF %CURRENT% LSS %LASTCURRENT% SET /A DAYS=DAYS-1
SET LASTCURRENT=%CURRENT%
IF %CURRENT% LSS %ENDING% GOTO delay_wait
IF %DAYS% GTR 0 GOTO delay_wait
GOTO :EOF

3

আমি এই সি # স্লিপ প্রোগ্রামটি ব্যবহার করছি। সি # যদি আপনার পছন্দের ভাষা হয় তবে এটি আপনার পক্ষে আরও সুবিধাজনক হতে পারে:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace sleep
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length == 1)
            {
                double time = Double.Parse(args[0]);
                Thread.Sleep((int)(time*1000));
            }
            else
            {
                Console.WriteLine("Usage: sleep <seconds>\nExample: sleep 10");
            }
        }
    }
}

3

পাইথন সলিউশনের চেয়ে আরও বেশি হালকা হ'ল পার্ল ওয়ান লাইনার।

সাত সেকেন্ডের জন্য ঘুমানোর জন্য এটি বিএটি স্ক্রিপ্টে রাখুন:

perl -e "sleep 7"

এই সমাধানটি কেবল এক সেকেন্ডের রেজোলিউশন সরবরাহ করে।

আপনার যদি উচ্চতর রেজোলিউশনের প্রয়োজন হয় তবে সিপিএএন থেকে সময় :: হাইআরএস মডিউলটি ব্যবহার করুন। এটি সরবরাহ করে usleep()যা কোন মাইক্রোসেকেন্ডে ঘুমায় এবং nanosleep()কোনটি ন্যানোসেকেন্ডে ঘুমায় (উভয় ফাংশন কেবল পূর্ণসংখ্যার যুক্তি গ্রহণ করে)। স্ট্যাক ওভারফ্লো প্রশ্নটি দেখুন পার্লের এক মিলিসেকেন্ডের জন্য আমি কীভাবে ঘুমাব? বিস্তারি তথ্যের জন্য.

আমি বহু বছর ধরে অ্যাক্টিভ পার্ল ব্যবহার করেছি । এটি ইনস্টল করা খুব সহজ।


2

অথবা পাইথন কমান্ড লাইন, উদাহরণস্বরূপ, সাড়ে seconds সেকেন্ডের জন্য:

python -c "import time;time.sleep(6.5)"

সংক্ষিপ্ত হলেও এটি গৃহীত উত্তরের একটি সদৃশ।
পিটার মর্টেনসেন

@ পিটার মর্টেনসেন: এটি আপনাকে সমস্ত কিছু সহজেই একটি ব্যাচের ফাইলের একক লাইনে রাখার অনুমতি দেয়।
মার্টিনো

2

পিং ব্যবহার যতক্ষণ না আপনি "কিছুটা অপেক্ষা" করতে চান ততক্ষণ ভাল। এটি যেহেতু আপনি নীচে অন্যান্য ফাংশনগুলির উপর নির্ভরশীল যেমন আপনার নেটওয়ার্ক কাজ করছে এবং 127.0.0.1 তে উত্তর দেওয়ার মতো কিছুই নেই। ;-) সম্ভবত এটি ব্যর্থ হওয়ার খুব বেশি সম্ভাবনা নেই তবে এটি অসম্ভবও নয় ...

আপনি যদি নিশ্চিত হতে চান যে আপনি ঠিক সময়টির জন্য অপেক্ষা করছেন, আপনার অবশ্যই এটি ব্যবহার করা উচিত sleep কার্যকারিতাটি (এতে আরও সুবিধা হয় যে এটি সিপিইউ শক্তি ব্যবহার করে না বা কোনও নেটওয়ার্ক প্রস্তুত হওয়ার জন্য অপেক্ষা করবে)।

ঘুমের জন্য ইতিমধ্যে তৈরি এক্সিকিউটেবল সন্ধান করা সর্বাধিক সুবিধাজনক উপায়। এটি আপনার উইন্ডোজ ফোল্ডারে বা আপনার স্ট্যান্ডার্ড পাথের অন্য কোনও অংশে ফেলে দিন এবং এটি সর্বদা উপলব্ধ।

অন্যথায়, আপনার যদি সংকলনের পরিবেশ থাকে আপনি সহজেই নিজেকে তৈরি করতে পারেন। Sleepফাংশন পাওয়া যায় kernel32.dllযাতে আপনি শুধু ব্যবহার করতে যে এক প্রয়োজন। :-) ভিবি / ভিবিএর জন্য আপনার উত্সের শুরুতে নীচের ফাংশন ঘোষণার জন্য নিম্নলিখিতটি ঘোষণা করুন:

private Declare Sub Sleep Lib "kernel32" Alias "Sleep" (byval dwMilliseconds as Long)

সি # এর জন্য:

[DllImport("kernel32.dll")]
static extern void Sleep(uint dwMilliseconds);

স্লিপ ফাংশন (এমএসডিএন) তে আপনি এই কার্যকারিতা (উইন্ডোজ 2000 সাল থেকে উপলব্ধ) সম্পর্কে আরও পাবেন ।

স্ট্যান্ডার্ড সিতে sleep()স্ট্যান্ডার্ড লাইব্রেরিতে অন্তর্ভুক্ত করা হয় এবং মাইক্রোসফ্টের ভিজ্যুয়াল স্টুডিও সিতে ফাংশনটির নামকরণ করা হয় Sleep(), যদি স্মৃতি আমাকে পরিবেশন করে। ;-) এই দু'টি পূর্বের দুটি ঘোষণার হিসাবে মিলিসেকেন্ডে নয়, সেকেন্ডে আর্গুমেন্ট নেয়।


1
.NET ফ্রেমওয়ার্কে ঘুম পাওয়া যায় - থ্রেড ক্লাসে এক নজরে দেখুন, যেমন: System.Threading ব্যবহার করে; .... থ্রেড.স্লিপ (1000);
জন সাবলীল

2
যদি "পিং 127.0.0.1" ব্যর্থ হয় তবে আপনার "দুশ্চিন্তা" এর চেয়ে বেশি উদ্বেগজনক বিষয় আছে - এটি লুপব্যাক ইন্টারফেস, আরপিসি সম্ভবত কিছুটা পাগল হয়ে যাবে।
পিসকভোর

2

উইন্ডোজ 2000 এর পরে সমস্ত উইন্ডোজ সংস্করণে কার্যকর হওয়া সবচেয়ে ভাল সমাধানটি হ'ল:

timeout numbersofseconds /nobreak > nul

এক্সপি প্রোতে কাজ করে না ...'timeout' is not recognized as an internal or external command, operable program or batch file.
মার্টিনিউ

1

পাথপিং.এক্স.সি দ্বিতীয় চেয়ে কম ঘুমাতে পারে।

@echo off
setlocal EnableDelayedExpansion 
echo !TIME! & pathping localhost -n -q 1 -p %~1 2>&1 > nul & echo !TIME!

> sleep 10
17:01:33,57
17:01:33,60

> sleep 20
17:03:56,54
17:03:56,58

> sleep 50
17:04:30,80
17:04:30,87

> sleep 100
17:07:06,12
17:07:06,25

> sleep 200
17:07:08,42
17:07:08,64

> sleep 500
17:07:11,05
17:07:11,57

> sleep 800
17:07:18,98
17:07:19,81

> sleep 1000
17:07:22,61
17:07:23,62

> sleep 1500
17:07:27,55
17:07:29,06

1

আমি এটির দ্বারা মুগ্ধ:

http://www.computerhope.com/batch.htm#02

choice /n /c y /d y /t 5 > NUL

প্রযুক্তিগতভাবে, আপনি choiceকেবল y গ্রহণ করার জন্য কমান্ডটি বলছেন । এটি y এর সাথে ডিফল্ট, 5 সেকেন্ডের মধ্যে এটি করার জন্য, কোনও প্রম্পট আঁকতে এবং NUL কে কিছু না বলা (লিনাক্সের নাল টার্মিনালের মতো) dump


3
আমি এখানে নিজেকে প্রতিধ্বনিত করব: আমি এটি মোটেও সুপারিশ করি না। CHOICEআমি জানি যে সংস্করণগুলিতে আমি অপেক্ষা করি, যদি কেউ অপেক্ষা করার সময় কোনও কী চাপায়, যা অধৈর্য লোকেরা মাঝে মাঝে করে, তবে পছন্দ একটি ইনপুট পড়বে, খারাপ ইনপুটটির জন্য একটি সিস্টেম বীপ দেবে, এবং কাউন্টডাউন বন্ধ করবে, তাই তারা ওয়াইকে চাপ না দেওয়া পর্যন্ত এটি স্তব্ধ হয়ে যাবে unless এবং যদি তারা কেবল Y কে ধাক্কা দেয় তবে তারপরে 5 অপেক্ষা না করে বিকল্পটি ঠিক সেখানেই শেষ হয় Also এছাড়াও, এই পছন্দটি সত্যই অদ্ভুত ভিস্তার সিনট্যাক্স ব্যবহার করছে। এর পরিবর্তে সাধারণ পছন্দ কমান্ডগুলি ব্যবহার CHOICE /T:Y,5 > NULকরে। (পুরানো সংস্করণগুলিতে কোনও / ডি পতাকা নেই।) এবং আপনার যদি ভিস্তা থাকে তবে TIMEOUTপরিবর্তে ব্যবহার করুন।
স্টাইল সহ কোডিং

1

নির্দিষ্ট সময়সীমা করতে আপনি একটি .vbs ফাইলও ব্যবহার করতে পারেন:

নীচের কোডটি .vbs ফাইল তৈরি করে। এটি আপনার র‌্যাবচ কোডের শীর্ষের কাছে রাখুন:

echo WScript.sleep WScript.Arguments(0) >"%cd%\sleeper.vbs"

তারপরে নীচের কোডটি .vbs খোলে এবং কতক্ষণ অপেক্ষা করতে হবে তা নির্দিষ্ট করে:

start /WAIT "" "%cd%\sleeper.vbs" "1000"

উপরের কোডে, "1000" হ'ল মিলিসেকেন্ডে .vbs ফাইলটিতে প্রেরণে সময়ের বিলম্বের মান, উদাহরণস্বরূপ, 1000 এমএস = 1 এস। আপনি চাইলে এই অংশটি পরিবর্তন করতে পারেন।

নীচের কোডটি .vbs ফাইলটি মুছে ফেলার পরে এটি শেষ করে। আপনার ব্যাচ ফাইলের শেষে এটি রাখুন:

del /f /q "%cd%\sleeper.vbs"

এবং এখানে কোডটি এক সাথে রয়েছে তাই অনুলিপি করা সহজ:

echo WScript.sleep WScript.Arguments(0) >"%cd%\sleeper.vbs"
start /WAIT "" "%cd%\sleeper.vbs" "1000"
del /f /q "%cd%\sleeper.vbs"

1

উইন্ডোজ ভিস্তা থেকে আপনার কাছে টাইমিউট এবং স্লিপ কমান্ড রয়েছে তবে উইন্ডোজ এক্সপি বা উইন্ডোজ সার্ভার 2003 এ ব্যবহার করার জন্য আপনার উইন্ডোজ সার্ভার 2003 রিসোর্স সরঞ্জাম কিটটি লাগবে ।

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

w32tm /stripchart /computer:localhost /period:1 /dataonly /samples:N  >nul 2>&1

যেখানে আপনি বিরতি দিতে চান সেই সেকেন্ডের সাথে আপনার এন প্রতিস্থাপন করা উচিত। এছাড়াও, এটি পূর্বশর্ত ছাড়াই প্রতিটি উইন্ডোজ সিস্টেমে কাজ করবে।

টাইপপ্রিফ ব্যবহার করা যেতে পারে:

typeperf "\System\Processor Queue Length" -si N -sc 1 >nul

এমএসটিএ এবং জাভাস্ক্রিপ্ট সহ (এক সেকেন্ডের নীচে ঘুমের জন্য ব্যবহার করা যেতে পারে):

start "" /wait /min /realtime mshta "javascript:setTimeout(function(){close();},5000)"

এটি আরও সুনির্দিষ্ট হতে হবে (এক সেকেন্ডের অধীনে অপেক্ষা করার জন্য) - স্ব-সংকলন সম্পাদনযোগ্য উপর নির্ভরশীল .net:

@if (@X)==(@Y) @end /* JScript comment
@echo off
setlocal
::del %~n0.exe /q /f
::
:: For precision better call this like
:: call waitMS 500
:: in order to skip compilation in case there's already built .exe
:: as without pointed extension first the .exe will be called due to the ordering in PATEXT variable
::
::
for /f "tokens=* delims=" %%v in ('dir /b /s /a:-d  /o:-n "%SystemRoot%\Microsoft.NET\Framework\*jsc.exe"') do (
   set "jsc=%%v"
)

if not exist "%~n0.exe" (
    "%jsc%" /nologo /w:0 /out:"%~n0.exe" "%~dpsfnx0"
)


%~n0.exe %*

endlocal & exit /b %errorlevel%


*/


import System;
import System.Threading;

var arguments:String[] = Environment.GetCommandLineArgs();
function printHelp(){
    Console.WriteLine(arguments[0]+" N");
    Console.WriteLine(" N - milliseconds to wait");
    Environment.Exit(0);    
}

if(arguments.length<2){
    printHelp();
}

try{
    var wait:Int32=Int32.Parse(arguments[1]);
    System.Threading.Thread.Sleep(wait);
}catch(err){
    Console.WriteLine('Invalid Number passed');
    Environment.Exit(1);
}

1

সেন্টিমিডি / ব্যাচে ' ঘুম ' অর্জনের অনেকগুলি উপায় রয়েছে :

আমার প্রিয় একটি:

TIMEOUT /NOBREAK 5 >NUL 2>NUL

এটি কোনও আউটপুট ছাড়াই 5 সেকেন্ডের জন্য কনসোলটি বন্ধ করে দেবে।

সর্বাধিক ব্যবহৃত:

ping localhost -n 5 >NUL 2>NUL

এটি localhost5 বার সংযোগ করার চেষ্টা করবে । যেহেতু এটি আপনার কম্পিউটারে হোস্ট করা আছে তাই এটি সর্বদা হোস্টের কাছে পৌঁছায় তাই প্রতি সেকেন্ডে এটি প্রতি সেকেন্ডে নতুন চেষ্টা করবে। -nপতাকা ইঙ্গিত কতবার স্ক্রিপ্ট সংযোগ চেষ্টা করবে। এই ক্ষেত্রে 5, তাই এটি 5 সেকেন্ড স্থায়ী হবে।

শেষের রূপগুলি:

ping 1.1.1.1 -n 5 >nul

এই স্ক্রিপ্টে এটির শেষের সাথে তুলনা করে কিছু পার্থক্য রয়েছে। এটি কল করার চেষ্টা করবে না localhost। পরিবর্তে, এটি 1.1.1.1খুব দ্রুত ওয়েবসাইটের সাথে সংযোগ স্থাপনের চেষ্টা করবে । আপনার যদি সক্রিয় ইন্টারনেট সংযোগ থাকে তবেই এই ক্রিয়াটি 5 সেকেন্ড স্থায়ী হবে অন্যথায় এটি কাজ শেষ করতে আনুমানিক 15 স্থায়ী হবে । আমি এই পদ্ধতিটি ব্যবহার করার পরামর্শ দিচ্ছি না।

ping 127.0.0.1 -n 5 >nul

এটি হ'ল উদাহরণ 2 (সর্বাধিক ব্যবহৃত) হিসাবে একই। এছাড়াও, আপনি এটি ব্যবহার করতে পারেন:

ping [::1] -n 5 >nul

এটি পরিবর্তে, আইপিভি 6 এর localhostসংস্করণ ব্যবহার করে ।

এই ক্রিয়াটি সম্পাদন করার জন্য প্রচুর পদ্ধতি রয়েছে। তবে আমি উইন্ডোজ ভিস্তার এবং পরবর্তী সংস্করণগুলির জন্য পদ্ধতি 1 এবং ওএস এর পূর্ববর্তী সংস্করণগুলির জন্য সর্বাধিক ব্যবহৃত পদ্ধতি (পদ্ধতি 2) পছন্দ করি।


0

আপনি শিরোনাম বারে PAUSE বার্তাটি রেখে অভিনবতা পেতে পারেন:

@ECHO off
SET TITLETEXT=Sleep
TITLE %TITLETEXT%
CALL :sleep 5
GOTO :END
:: Function Section
:sleep ARG
ECHO Pausing...
FOR /l %%a in (%~1,-1,1) DO (TITLE Script %TITLETEXT% -- time left^
 %%as&PING.exe -n 2 -w 1000 127.1>NUL)
EXIT /B 0
:: End of script
:END
pause
::this is EOF

0

এটি উইন্ডোজ এক্সপি এসপি 3 এবং উইন্ডোজ 7 এ পরীক্ষা করা হয়েছিল এবং সিএসক্রিপ্ট ব্যবহার করে। ডেল "" অনুরোধ এড়াতে আমি কিছু নিরাপদ প্রহরী রেখেছি। ( /qবিপজ্জনক হবে)

এক সেকেন্ড অপেক্ষা করুন:

স্লিপঅরডলেএক্সেকিউশন 1000

500 এমএস অপেক্ষা করুন এবং তারপরে স্টাফ চালান:

sleepOrDelayExecution 500 dir \ /s

sleepOrDelayExecution.bat:

@echo off
if "%1" == "" goto end
if NOT %1 GTR 0 goto end
setlocal
set sleepfn="%temp%\sleep%random%.vbs"
echo WScript.Sleep(%1) >%sleepfn%
if NOT %sleepfn% == "" if NOT EXIST %sleepfn% goto end
cscript %sleepfn% >nul
if NOT %sleepfn% == "" if EXIST %sleepfn% del %sleepfn%
for /f "usebackq tokens=1*" %%i in (`echo %*`) DO @ set params=%%j
%params%
:end

0

যেহেতু অন্যরা তৃতীয় পক্ষের প্রোগ্রামগুলির (পাইথন, পার্ল, কাস্টম অ্যাপ্লিকেশন, ইত্যাদি) পরামর্শ দিচ্ছেন, অন্য বিকল্পটি হ'ল জিএনইউ কোর্টিলস উইন্ডোজের জন্য http://gnuwin32.sourceforge.net/packages/coreutils.htm এ উপলব্ধ ।

স্থাপনার জন্য 2 টি বিকল্প:

  1. পূর্ণ প্যাকেজ ইনস্টল করুন (এতে কোরিউটিলস, নির্ভরতা, ডকুমেন্টেশন ইত্যাদির পুরো স্যুট অন্তর্ভুক্ত থাকবে)।
  2. কেবলমাত্র 'স্লিপ.এক্স্সি' বাইনারি এবং প্রয়োজনীয় নির্ভরতা ইনস্টল করুন (নির্ভরতা পেতে depend.exe ব্যবহার করুন)।

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

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