এটি গ্যারি এর উত্তর এবং অস্কারের উত্তরগুলির দিকগুলি একত্রিত করে । গ্যারি দ্বারা উল্লিখিত হিসাবে, এর আউটপুট query session
দেখতে কিছু একরকম লাগে
SESSIONNAME USERNAME ID STATE TYPE DEVICE
services 0 Disc
>console janedoe 1 Active
rdp-tcp 65536 Listen
বা, আমার ক্ষেত্রে ("ব্যবহারকারী পরিবর্তন করুন" ব্যবহার করে)
SESSIONNAME USERNAME ID STATE TYPE DEVICE
services 0 Disc
>console gman 1 Active
otherguy 2 Disc
(আমার কাছে আরডিপি সেট আপ নেই, সুতরাং আমি এটি দিয়ে পরীক্ষা করতে পারছি না)) সম্ভবত সক্রিয়ভাবে সেশনের আইডি নির্ধারণ করা প্রশ্নের উদ্দেশ্যটিই হ'ল। আমি query session
বর্তমান সেশনের মতো দেখতে এর আউটপুট অনুসন্ধান করার পরামর্শ দিচ্ছি :
for /f "tokens=2-4" %a in ('query session') do @if "%a"=="%username%" if "%c"=="Active" echo %b
যা 2nd, 3 য়, এবং 4 র্থ শব্দ আউটপুট প্রতিটি লাইন থেকে (যা আমরা ব্যবহারকারী নাম করার জন্য, [অধিবেশন] আইডি, এবং রাষ্ট্র আশা) নির্ধারণ query session
করতে %a
, %b
এবং %c
যথাক্রমে, এবং তারপর লাইন কোথা থেকে রিপোর্ট সেশন আইডি USERNAME আমি এবং স্টেট হ'ল Active
।
দেখা যাচ্ছে যে প্যারামিটার query session
লাগে username
তাই উপরেরটি সরল করা যায়
for /f "tokens=2-4" %a in ('query session %username%') do @if "%c"=="Active" echo %b
অথবা
for /f "tokens=3-4" %a in ('query session %username%') do @if "%b"=="Active" echo %a
এটি কোনও স্ক্রিপ্টে (ব্যাচ ফাইল) ব্যবহার করতে, আপনি বলতে চাইতে পারেন
set MY_SESSION_ID=unknown
for /f "tokens=3-4" %%a in ('query session %username%') do @if "%%b"=="Active" set MY_SESSION_ID=%%a
ব্যবহার করে %%a
এবং %%b
(এর পরিবর্তে %a
এবং %b
) কারণ এটি কোনও স্ক্রিপ্টে রয়েছে। @
পুরো ব্যাচের ফাইলটি যদি নীচে থাকে তবে আপনি সম্ভবত এটি ছেড়ে দিতে পারেন @echo off
। সূচনাটি আপনাকে unknown
ত্রুটি-পরিচালনা করতে দেয় ( query session
সেই মিলগুলির আউটপুটে কোনও লাইন নেই কিনা তা নির্ধারণ করে)।
ব্যায়াম হিসাবে যদি আউটপুটে একাধিক মিলের লাইন থাকে তবে তা চিহ্নিত করতে এবং প্রতিক্রিয়া জানাতে ত্রুটি-পরিচালনা প্রসারিত করা query session
।