প্রশাসক হিসাবে কোনও ব্যাচ ফাইলটি স্বয়ংক্রিয়ভাবে চালানো কি সম্ভব?


48

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

দ্রষ্টব্য: আমি ফাইলটিতে ডান ক্লিক করার এবং ক্লিক করার সমাধান সম্পর্কে ইতিমধ্যে জানি Run As Administrator, তবে এটি কোনও স্বয়ংক্রিয় সমাধান নয়।



আমি এটি আমার পক্ষে কাজ করতে পেরেছি: stackoverflow.com/a/13811519/27928
রোহিত

2
দুটি বাম ক্লিক কীভাবে একটি বামের চেয়ে বেশি স্বয়ংক্রিয় হয়- এবং একটি ডান ক্লিক?
jiggunjer

উত্তর:


44

হ্যাঁ, আপনি প্রশাসনিক অধিকার সহ একটি ব্যাচ ফাইল চালাতে সক্ষম। দুর্ভাগ্যক্রমে, আপনি নিজে ব্যাচ ফাইল থেকে সরাসরি এটি করতে পারবেন না। এই কাজটি করার জন্য আপনাকে প্রথমে সেই ব্যাচ ফাইলের একটি শর্টকাট তৈরি করতে হবে এবং সেই শর্টকাটের জন্য বৈশিষ্ট্যগুলি পরিবর্তন করতে হবে।

একটি শর্টকাট তৈরি করতে, অনেকগুলি উপায় রয়েছে তবে প্রসঙ্গ মেনুতে সেন্ড টু বিকল্পটি ব্যবহার করে সহজতম এবং দ্রুততম উপায় ।

Right click batch file > Send to > Desktop (create shortcut)

আপনি যেখানে চান সেখানে অবশ্যই শর্টকাট পাঠাতে পারেন। প্রশাসক হিসাবে চলতে ব্যাচ ফাইলটি উন্নত করতে, নীচের পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনি সবে তৈরি শর্টকাটটিতে ডান ক্লিক করুন (ডেস্কটপে থাকা উচিত বা যেখানে আপনি এটি প্রেরণ করা উচিত)
  2. শর্টকাট ট্যাবের অধীনে, উন্নত ... বোতামটি ক্লিক করুন।
  3. অ্যাডমিনিস্ট্রেটর হিসাবে রান করুন যাচাই করুন এবং মডেল উইন্ডো এবং প্রধান বৈশিষ্ট্য উইন্ডো উভয়ই ওকে টিপুন।
  4. ডাবল ক্লিক করে শর্টকাটটি চালান এবং ব্যাচ ফাইলটি প্রশাসক হিসাবে চালানো উচিত।

1
আপনি সর্বদা ব্যাচ ফাইলকে শর্টকাট কল করতে বাধ্য করতে এবং শর্টকাটটি একটি পরামিতি পাস করে শর্ট কাটটি কল না করার জন্য জানতে পারেন। আপনি if "%~1" == "" start %USERPROFILE%\Desktop\Shortcut.lnk && GOTO :EOFঠিক নীচের মতো কিছু সন্নিবেশ করিয়েছিলেন @echo offএবং শর্টকাট লিঙ্কটি program.bat aকেবলমাত্র পরিবর্তে তৈরি করবেন program.bat
trlkly

2
ইফেদী লিখেছেন "স্বীকৃত উত্তর [টেক ১৩3737 এর এই উত্তরটি] সত্যিই কাজ করে But <- যদিও অন্য কেউ বলেছেন যে এটি ইউএসি ছাড়াই কাজ করে
বার্লপ

ডাবল ক্লিক করার পরে আমার জন্য শর্টকাট বর্তমান ডিরেক্টরিতে চলবে না, যদিও .bat তা করে। এমনকি শর্টকাটে থাকা "স্টার্ট ইন:" সম্পত্তি সহ। সুতরাং নিশ্চিত করুন যে আপনার .bat পুরো ফাইলের পাথ নির্দিষ্ট করে।
রব মোশার

29

বেন গ্রিপকার অন্য একটি প্রশ্নের উত্তরে পোস্ট করেছেন :

REM --add the following to the top of your bat file--


@echo off

:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------

হ্যাঁ আমি এটি খুঁজে পেয়েছি এবং এটি currnetly ব্যবহার করছি। যাইহোক, ধন্যবাদ!
এন্টিপ

মূলত আমি যা খুঁজছিলাম আশা করছি ভিবি ব্যবহার না করে এটি করার কোনও উপায় আছে?
শেফ ফেরাউন 16

@ শেফফেরাও এটি ব্যাচের ফাইলটি চালানোর জন্য একটি উন্নত কনসোল তৈরি করে। আপনি পাওয়ারশেল স্ক্রিপ্টের সাহায্যেও এটি করতে পারেন।
jiggunjer

এটি আমার পক্ষে সেরা উত্তর ছিল।
kasperhj

4

গৃহীত উত্তর সত্যই কাজ করে। তবে আমি দেখতে পেয়েছি যে উইন্ডোজ 7-এ, প্রতিবার শর্টকাট ক্লিক করার পরে আমাকে ইউএসি ডায়ালগ সহ্য করতে হয়েছিল। এই আইএমএইচও এই প্রশ্নের "স্বয়ংক্রিয়ভাবে" থেকে উল্লেখযোগ্যভাবে বিয়োগ করে!

তারপরে আমি দেখতে পেলাম যে আমার নিজের পরিস্থিতিতে, .batপ্রশ্নে থাকা ফাইলটি টাস্ক শিডিয়ুলার দ্বারা চালিত করতে হবে। এই ক্ষেত্রে, টাস্কটির ট্যাবটিতে Run with highest privilegesবিকল্পটি পরীক্ষা করে General, সুন্দরভাবে সমস্যার যত্ন নেয়। .batযেকোনো ঝামেলা ছাড়া প্রশাসক হিসেবে চালানো হয়।

PS: আমি বুঝতে পারি নি যে আমি এই উত্তরে চিত্রগুলি আপলোড করতে পারি না, কারণ আমার সাথে এখনই আমার খুব ছোট একটি স্ক্রিনশট বসে আছে! নাকি পারি?


2
আপনি যদি ছবিগুলিতে লিঙ্ক যুক্ত করেন তবে আপনার জন্য কেউ এগুলি ইনলাইন করবে।
রামহাউন্ড

@Ramhound। ছবিগুলিতে লিঙ্ক যুক্ত করবেন? ছবিটি অনলাইনে নয়, আমার ডেস্কটপে রয়েছে। বা, অবশ্যই আমি কিছু মিস করছি?
ইফেদী ওকনকভো

হ্যাঁ; আপনি এগুলি আপলোড করুন; আপনি কেবল নিজের উত্তরের মধ্যে স্ক্রিনশটগুলি ইনলাইন করতে পারবেন না।
রামহাউন্ড

হয় সেই আপলোড বোতামটি ছিল না, নাকি আমি গতকাল আধ-অন্ধ ছিলাম! আমি নিশ্চিত এটি পরে ছিল। যাইহোক, আমি ফাইলটি আপলোডটি খুব সুন্দরভাবে সম্পন্ন করেছি, কেবলমাত্র আমাকে বলা যেতে পারে যে ছবিগুলি পোস্ট করার জন্য আমার 10 জনের একটি প্রতিনিধি দরকার। ধন্যবাদ যদিও.
ইফেদী ওকনকভো

আপনি এখনও উত্তরে লিঙ্কটি রাখতে পারেন।
রামহাউন্ড

4

উইন্ডোজ 7 এ

  1. B ব্যাচের ফাইলটিতে একটি শর্টকাট তৈরি করুন

  2. শর্টকাট ফাইলটিতে ডান ক্লিক করুন

  3. প্রশাসক হিসাবে চলার জন্য একটি চেকবক্স খুঁজতে অগ্রিম বোতামটি ক্লিক করুন

নীচে স্ক্রিনশট চেক করুন

স্ক্রিনশট


1
আপনার গ্রহণযোগ্য উত্তর হিসাবে একই।
এন্টিপ

হ্যাঁ, আমি তাড়াতাড়ি প্রত্যেকের জন্য স্ক্রিনশট সহ একটি সাধারণ তালিকা তৈরি করতে চেয়েছিলাম।
ফেডমিচ

3
যদি কারও তাড়াহুড়া হয় তবে আমি সন্দেহ করি যে তারা উত্তরটির জন্য নীচে স্ক্রোল করবে will ধন্যবাদ যাইহোক
এন্ট্প

3

আপনি আমার স্ক্রিপ্ট ব্যাচ_এডমিনটি ব্যাচ নিজস্ব স্ক্রিপ্ট, বা বিএটি বা .সিএমডি ব্যবহার করতে স্বয়ংক্রিয়ভাবে প্রশাসককে উন্নত করতে ব্যবহার করতে পারেন। এই ফাংশনটি স্ট্যান্ডার্ড সরঞ্জামগুলির সাথে স্ট্যান্ডার্ড সরঞ্জামগুলির সাথে এবং একইভাবে বিভিন্ন উইন্ডোজ সিস্টেমে কাজটি নিশ্চিত করে। এটি বেশ কয়েকটি মানক এবং অন্তর্নির্মিত উইন্ডোজ কমান্ড ব্যবহার করে। অন্য কোনও বাহ্যিক স্ক্রিপ্ট ব্যবহার করবেন না। এটি কোনও প্রোগ্রামকে প্রশাসক হিসাবে কল করতে ব্যবহৃত হতে পারে, কেবল স্ক্রিপ্ট ব্যাচ নয়। এটি একটি ছোট স্ক্রিপ্ট তৈরি করা যথেষ্ট, যা পরে প্রোগ্রামটিকে কল করে যার জন্য অনুমতি প্রশাসকের প্রয়োজন। এটি যেকোন অনুসন্ধানের PATH ফোল্ডারে রাখুন (% PATH% থেকে)।

এটি ব্যবহার করার জন্য, আপনি কেবলমাত্র তার মূল ব্যাচ স্ক্রিপ্টে নিম্নলিখিত লাইনটি সুনির্দিষ্টভাবে সন্নিবেশ করুন, যা প্রশাসক হিসাবে চালানো হবে। এটি সর্বোত্তমভাবে আমাদের পিতামাতার স্ক্রিপ্টের শীর্ষে করা হয় এবং এটি সর্বোত্তম যে প্রথমে CALL এর মাধ্যমে ডাকা হবে, কিছু উপ-স্ক্রিপ্টগুলি (নীচে বিস্তারিত ব্যাখ্যা দেখুন)।

net session >nul 2>nul&if errorlevel 1  Batch_Admin "%~0" %*

এটি যে কোনও চাইল্ড স্ক্রিপ্টের ভিতরে ALোকানো যেতে পারে, যাকে CALL সিনট্যাক্স দ্বারা ডাকা হয়। কোনও বার্তা প্রদর্শন করার সময় এটিতে প্রশাসকের সুবিধা নেই, যেমন। ব্যাচ_আডমিনকে কল করার আগে 5 সেকেন্ডের জন্য সেকেন্ডের সংখ্যায় চলক "শোএডমিনআইএনফো" সেট করুন

SET ShowAdminInfo=5
net session >nul 2>nul&if errorlevel 1  Batch_Admin "%~0" %*

সুতরাং এটি কীভাবে কাজ করে:

User ব্যবহারকারীর অনুমতি গ্রহণের জন্য VBScript এর মাধ্যমে UAC.ShellExecute কল করুন

• ব্যাচ স্ক্রিপ্ট বা বিএটি বা সিএমডি চালায়

• স্ক্রিপ্ট কলারের একটি দীর্ঘ নাম স্পেস থাকতে পারে কলগুলিতে কলটিতে অন্তর্ভুক্ত

The কমান্ড লাইন থেকে পাস হওয়া মাস্টার স্ক্রিপ্টকে সমস্ত পরামিতি কল করুন, যেমন কলটির কোনও সংক্রমণ নেই এবং স্ক্র্যাচ থেকে কিছু শুরু করুন, বিশেষ বর্ণগুলি যেমন বিস্মৃত চিহ্ন (!) এবং শতাংশ (%) সহ, এবং এছাড়াও বন্ধনী সহ ()

The কলটি ডিরেক্টরিতে যেখানে এই স্ক্রিপ্টটি মাস্টার সেখানে স্থান নেয় যদি একটি মাস্টার স্ক্রিপ্টের অবস্থান ধরে

We সহায়ক আমরা একটি ভেরিয়েবল "শোএডমিনআইএনফো", যেমন উদ্বোধন করি যদি একটি বার্তা প্রদর্শন করে। 5 সেকেন্ডের জন্য যা প্রশাসনিক অতিরিক্ত তথ্য দেওয়ার এবং অবগত সিদ্ধান্তের সম্ভাবনার অধিকারগুলির তাত্ক্ষণিকভাবে অধিকার রোধ করতে পারে। সেট করতে হবে এমন উদাহরণগুলির উদাহরণগুলি: SET ShowAdminInfo = 5 ডিফল্টরূপে, কারণ এই ভেরিয়েবলটি সংজ্ঞায়িত করা হয় না, এটি প্রদর্শন করে না।

Search স্ক্রিপ্টটি সিস্টেম অনুসন্ধানের পথে% PATH% এবং নেটওয়ার্ক সংস্থান থেকে যেমন: calling কম্পিউটার \ ভাগ \ পরীক্ষা.বাট থেকে কল করছে

The প্রয়োজনীয় সহায়ক ফাইলগুলি লেখার ক্ষেত্রে ভুল বোঝাবুঝি রোধ করে যখন স্ক্রিপ্টটি প্রায় একই সময়ে বেশ কয়েকটি ব্যাচ_এডমিনকে কল করে। এটি 1 থেকে 100 পর্যন্ত এলোমেলো নম্বর ব্যবহার করে

• তবে, পিতামহী স্ক্রিপ্টে এটি ব্যবহার করা সবচেয়ে ভাল। প্রশাসকের অধিকারে স্থানান্তরের জন্য সর্বদা আপনার প্রয়োজন হয় যে আপনি স্ক্রিপ্টটি পুরোপুরি আবার একটি নতুন উইন্ডোতে, একটি নতুন পরিবেশে পরিবর্তন করুন, ভেরিয়েবলগুলির আশ্রয় ছাড়াই আমাদের স্ক্রিপ্টে আগে সেট করা হয়েছিল এবং এই ভেরিয়েবলগুলির মানগুলি প্রশাসক হিসাবে কল করার পরে পাস করেনি did । শুধু স্ক্রিপ্ট আবার কার্যকর করা হবে।

সম্পূর্ণ স্ক্রিপ্টের নীচে ব্যাচ_আডমিন। এটি সম্পর্কে বর্ধিত তথ্য আমার সাইটে রয়েছে।

নোটপ্যাডে নীচের পাঠ্যটি অনুলিপি করুন এবং এটি ডিস্কে সংরক্ষণ করুন: Batch_Admin.bat

@echo off
if "%~1"=="" (echo *** Batch_Admin ***&echo.&echo Automatically get admin rights for another Batch. See info inside.&TIMEOUT /T 30>nul&goto:eof)

::  A D M I N I S T R A T O R   - Automatically get admin rights for script batch. Paste this on top:    net session >nul 2>nul&if errorlevel 1  Batch_Admin "%~0" %*
::                                Also keep Batch directory localisation and then set variable:   PATH_BAT
::                                if earlier variable "ShowAdminInfo" is empty (not defined) then no info, else showing info with number of seconds
::
::                                Elaboration:  Artur Zgadzaj
setlocal
setlocal DisableDelayedExpansion

SET "Localy="
if exist "%~1"      SET "Localy=YES"
if exist "%~1.BAT"  SET "Localy=YES"
if exist "%~1.CMD"  SET "Localy=YES"
if defined Localy   FOR %%I IN ("%~1") DO SET "PATH_BAT=%%~dI%%~pI"

 SET P1=%~1
 SET Parameters=%*
 SET Parameters=%Parameters:!=^^!%
setlocal EnableDelayedExpansion
 SET Parameters=!Parameters:%P1%=!
 SET Parameters=!Parameters:%%=%%%%!
setlocal DisableDelayedExpansion
 SET Parameters=%Parameters:~3%

net session >nul 2>nul&if not errorlevel 1  goto Administrator_OK

if not defined ShowAdminInfo   goto skip_message_Administrator
echo.
echo Script:  %~1
echo.
echo *****************************************************************
echo ***    R U N N I N G     A S     A D M I N I S T R A T O R    ***
echo *****************************************************************
echo.
echo Call up just as the Administrator. You can make a shortcut to the script and set:
echo.
echo          shortcut ^> Advanced ^> Running as Administrator
echo.
echo     Alternatively run once "As Administrator"
echo     or in the Schedule tasks with highest privileges
echo.
echo Cancel Ctrl-C or wait for launch  %ShowAdminInfo%  seconds ...
TIMEOUT /T %ShowAdminInfo% > nul

:skip_message_Administrator
MD %TEMP% 2> nul
SET /A $Admin$=%RANDOM% * 100 / 32768 + 1

SET "Percent="
del "%TEMP%\$Admin_%$Admin$%_Test.bat" 2>nul
echo %Parameters% > "%TEMP%\$Admin_%$Admin$%_Test.bat"
if not exist "%TEMP%\$Admin_%$Admin$%_Test.bat"  SET Percent=^"
del "%TEMP%\$Admin_%$Admin$%_Test.bat" 2>nul

echo @SET "PATH_BAT=%PATH_BAT%"               > "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat"
echo @SET "BatchFullName=%BatchFullName%"    >> "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat"
if defined Localy  (echo @CD /D "%PATH_BAT%" >> "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat")
echo @"%~1" %Parameters% %Percent% >> "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat"

echo SET UAC = CreateObject^("Shell.Application"^)                                   > "%TEMP%\$Admin_%$Admin$%_Batch_getPrivileges.vbs"
echo UAC.ShellExecute "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat", "", "", "runas", 1 >> "%TEMP%\$Admin_%$Admin$%_Batch_getPrivileges.vbs"
"%TEMP%\$Admin_%$Admin$%_Batch_getPrivileges.vbs"
endlocal
exit /B

:Administrator_OK
"%~1" %Parameters%
goto:eof
REM *** A D M I N I S T R A T O R  - Automatically get admin rights  (The End)  ***

আমি মনে করি এটি উপরের উত্তরের সাথে অনুরূপ বা অভিন্ন: superuser.com/a/852877/375935
jiggunjer

1

বিকল্পভাবে আপনি দ্বিতীয় ব্যাচের ফাইল তৈরি করতে পারেন, এটি আপনাকে প্রশাসক হিসাবে যে কোনও কিছু চালানোর অনুমতি দিতে পারে, কেবল একবার প্রশাসক পাসওয়ার্ড দেওয়ার সময়। পাসওয়ার্ডটি একটি প্রমাণীকরণ টোকেনে সংরক্ষিত হয় এবং কীভাবে ক্র্যাক করতে হয় কিছু প্রকৃত কম্পিউটার নেয়।

runas /savecred /user:(domain)\(admin user) "(file path to exe,bat,whatever)"

1
@echo off        
:: BatchGotAdmin        
:-------------------------------------        
REM  --> Check for permissions  
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"  
REM --> If error flag set, we do not have admin.  
if '%errorlevel%' NEQ '0' (    echo Requesting administrative privileges...    goto UACPrompt) else ( goto gotAdmin )  
:UACPrompt  
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"  
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"  
    "%temp%\getadmin.vbs"  
    exit /B
:gotAdmin  
chkdsk

এটি SOURCE এও কাজ করে : https ://social.technet.mic Microsoft.com/ Forums/windows/en-US/bc8a4561-d97e-4339-9b1c-9b90e54a7f92/request-elevation-inside-cmdbatch-file


আপনি কি আপনার সমাধান ব্যাখ্যা করতে পারেন?
স্কাই

1
অন্য সংস্করণ superuser.com/a/852877/375935
jiggunjer

0

আপনি একটি কমান্ড লাইন ইউটিলিটি ব্যবহার করতে পারেন elevate। (ডাউনলোড লিঙ্ক - https://drive.google.com/open?id=0Bz7qe_olclTwVGZLUklFMHNxQ00 )

Usage: Elevate [-?|-wait|-k] prog [args]
-?    - Shows this help
-wait - Waits until prog terminates
-k    - Starts the the %COMSPEC% environment variable value and
                executes prog in it (CMD.EXE, 4NT.EXE, etc.)
prog  - The program to execute
args  - Optional command line arguments to prog

এটি কি কোনও ইউএসি প্যানেল নিয়ে আসে না?
এন্টিপ

এটি সামনে এনেছে ... তবে, এটি কিছুই না-এর চেয়ে ভাল ("অ্যাক্সেস অস্বীকৃত" দেখে ..)
টুডো

সত্যই যদিও এটি "স্বয়ংক্রিয়" নয়, এটি
অ্যান্ট্প

0

প্রশাসক হিসাবে ব্যাট চালানোর উদাহরণ এটি। এটা আমার জন্য কাজ করে.

এটা এইভাবেই চলে:

if "%~s0"=="%~s1" ( cd %~sp1 & shift ) else (
  echo CreateObject^("Shell.Application"^).ShellExecute "%~s0","%~0 %*","","runas",1 >"%tmp%%~n0.vbs" & "%tmp%%~n0.vbs" & del /q "%tmp%%~n0.vbs" & goto :eof
)
:eof
start Cmd /k "netsh wlan show profile"
pause </

cls
Color 0A
@echo off
echo.
cls
set/p ProfileName=Type the name of the current Wifi signal? 
echo.
start Cmd /k "netsh wlan show profile name=%ProfileName% key=clear"
pause </
exit
pause

সুপার ব্যবহারকারীকে স্বাগতম! যদিও এটি প্রশ্নের উত্তর দিতে পারে, আপনি কেন এটি করেন তার কিছু ব্যাখ্যা দিতে পারলে এটি আরও ভাল উত্তর হবে।
ডেভিডপস্টিল

এর তবুও অন্য বৈকল্পিক superuser.com/a/852877/375935
jiggunjer
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.