একটি ডেস্কটপ অ্যাপ্লিকেশন শর্টকাটের লক্ষ্য প্রদর্শনের জন্য ব্যাচ কোড


0

আমি আইটি তথ্য টানতে একটি বেসিক ব্যাচকে প্রসারিত করার জন্য কাজ করছি যা আমার আইটি বিভাগের সাথে সম্পর্কিত অন্যান্য তথ্য কাজে অন্তর্ভুক্ত করে। আমার বিভাগ শেষ ব্যবহারকারী এবং আমাদের সার্ভারগুলিতে আমাদের সিসকো সরঞ্জামের জন্য দেশব্যাপী সমস্যা সমাধানের কাজ করে। এখনও অবধি আমার কাছে আইকনফিগের বিশদ এবং ম্যাক ঠিকানাটি কিছু ব্যতিক্রম সহ টানছে। এই পর্যন্ত আমার কোড এখানে:

@echo off
echo Listed below is your network IP information and physical MAC address.
echo\
echo I am logged as %UserName%.
echo My computer's name is %ComputerName%.
echo My IP settings are
ipconfig | find "." | find /i /v ""
echo\
echo My Mac address is
getmac | find /i /v "disconnected" | find /i /v "not present"
echo\
echo Provide this information to the IT team. 
echo Press the Space bar to close this window.
echo\
pause > nul

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

@echo off

Setlocal Enableextensions
Setlocal Enabledelayedexpansion

for /r %%X in (*.URL) do (
  set shortcut="%%X"
  echo SHORTCUT: !shortcut!


     for /f "tokens=2 delims==" %%i in ('findstr URL !shortcut!') do (
     set URL=%%i
 echo.
 echo URL PATH: !URL!
 )

echo ----------------------------------------------------------------
echo.
)

:end
Pause

এটি চালানো থেকে প্রাপ্ত আউটপুটটি হ'ল:

SHORTCUT: "C:\Users\***\Desktop\Application Catalog, IE only.url"

URL PATH: http://***/cmapplicationcatalog/#/SoftwareLibrary/AppListPageView.xaml
----------------------------------------------------------------

SHORTCUT: "C:\Users\***\Desktop\Test Yahoo.url"

URL PATH: http://www.yahoo.com/
----------------------------------------------------------------

Press any key to continue . . .

*** হ'ল যে পথগুলি আমি কাটা করেছি।

যখন আমি এটি কাজ করে যাব, আমি এগুলি পুরোপুরি একত্রিত করব। আমি ২ য় ব্যাচ থেকে যা পেতে চাইছি তা প্রতিটি পিসি ডেস্কটপের একটি নির্দিষ্ট ফাইল যা আমরা সিডিকে ড্রাইভকে তার টার্গেটের তথ্যটি টানতে বলেছি। লক্ষ্যবস্তুতে একটি সম্পূর্ণ আইপি ঠিকানা (http: // * । **। * /) যা আমার প্রয়োজন। শর্টকাটের টার্গেট টাইপটি হ'ল অ্যাপ্লিকেশন এবং ফাইলের ধরণ নিজেই শর্টকাট (.lnk)। লক্ষ্যটির একটি উদাহরণ:

"C:\Program Files (x86)\Internet Explorer\iexplore.exe" http://***.**.209.42/bin/start/wsStart.application

আমি যথাসম্ভব সুনির্দিষ্ট তথ্য দেওয়ার চেষ্টা করছি যাতে আমি এর সাথে সর্বাধিক সঠিক সহায়তা পেতে পারি।

তুমাকে অগ্রিম ধন্যবাদ.

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

function Get-StartMenuShortcuts
{
$Shortcuts = Get-ChildItem -Recurse "$Env:C:\Users\alexandm\Desktop\Batching" -Include *.lnk
$Shell = New-Object -ComObject WScript.Shell

foreach ($Shortcut in $Shortcuts)
{
$Properties = @{
ShortcutName = $Shortcut.Name
Target = $Shell.CreateShortcut($Shortcut).targetpath
}

New-Object PSObject -Property $Properties
}

[Runtime.InteropServices.Marshal]::ReleaseComObject($Shell) | Out-Null
}

$Output = Get-StartMenuShortcuts
$Output

আমার ব্যাচ থেকে দৌড়ানোর সময়, আমি আউটপুট পাই যা আমাকে মৌলিক টার্গেট পাথটি দেখায় যা iexplore.exe হতে পারে, তবে এটি আমাকে যোগ করা আইপি অ্যাড্রেস সহ পুরো লক্ষ্যপথটি দেয় না। আমি কি অনুপস্থিত কোন ধারণা?


আপনার ইতিমধ্যে কোডটি ঠিক কী হয়েছে?
DavidPostill

লিঙ্কগুলি .urlবা .websiteলিঙ্কগুলির মতো .lnkনয় , শর্টকাটগুলি সরল পাঠ্য ফাইল নয়। আপনি তাদের সাথে চিকিত্সা করা দরকার যেমন কোনও COMবস্তু
জোসেফজেড

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

@ জোসেফজেড আমি প্রায় কিছু পাওয়ারশেল কোড যুক্ত করেছি যা প্রায় উদ্দেশ্য হিসাবে কাজ করে, কোন চিন্তা?
মাইকেল আলেকজান্ডার

উত্তর:


0

আপনার পাওয়ারশেল কোডটি নিম্নরূপ হতে পারে:

$shell = New-Object -COM WScript.Shell
Get-ChildItem -Recurse "$env:UserProfile\Desktop\*.lnk","$env:PUBLIC\Desktop\*.lnk" | 
    ForEach-Object {
        $shortcut = $shell.CreateShortcut($_.FullName)
        $Args = $shortcut.Arguments
        if ( $Args -match [system.Uri]::SchemeDelimiter) {
            "shortcut: $($_.Name)"
            "exe path: $($shortcut.TargetPath)"
            "link URL: $($Args)"
            "---"
        }
    }

সমস্ত ফাংশন এবং পিএসওজেক্ট স্টাফকে অনুমতি দেওয়া হয়েছে ( ধরুন এটি একটি শট স্ক্রিপ্ট যা কেবল কোনও ফলাফল প্রদর্শন করবে )।

  • [system.Uri]::SchemeDelimiter উরি ক্ষেত্র, দেখতে .NETকোনো URI ক্লাস কেবল কিনা তা যাচাই করতে ব্যবহার করা হয় $shortcut.Argumentsহতে পারে URI(কিছু অক্ষর আছে যা করছে তার ঠিকানার অংশ থেকে যোগাযোগ প্রোটোকল স্কিম আলাদা নির্দিষ্ট করে URI); বর্তমানে যেমন লেখা আছে, স্ক্রিপ্টটি প্রোটোকল এবং এর বৈধতা সম্পর্কে চিন্তা করে না।

আপডেট হয়েছেএখনকার ব্যবহারকারীর ডেস্কটপ থেকে এবং সর্বজনীন ডেস্কটপ থেকে পুনরাবৃত্তভাবে সমস্ত .lnkফাইল ফোল্ডার প্রক্রিয়া করা হয় ।


আমাকে এটি পরে পরীক্ষা করে দেখতে হবে এবং এটি আমার জন্য কীভাবে কার্যকর হয়। হ্যাঁ, ফলাফল পেতে কেবল এটি একটি ওয়ান শট কমান্ড। এই প্রান্তে, ব্যাচটি চালানোর সময়, আমি আইপনফিগ তথ্য, ম্যাক ঠিকানা এবং এই সমস্ত শব্দটি আমাদের সমস্ত ব্যবহারকারীদের শর্টকাট থেকে লক্ষ্যযুক্ত ডেটা সরবরাহ করব।
মাইকেল আলেকজান্ডার

আমি এটি চালানোর চেষ্টা করেছি এবং আমার কোনও আউটপুট পাওয়া যায় না। "সিডিকে ড্রাইভ" নামের শর্টকাটটি উল্লেখ করতে আমার কি কোনও সংশোধন করার দরকার আছে? চেষ্টা করা টিঙ্কারিং এবং শুধুমাত্র পরিচালিত ত্রুটি। একটি রিডআউটের জন্য ব্যাচ থেকে নিজস্ব এবং দৌড়তে চেষ্টা করেছে। ফাঁকা। এছাড়াও, পাওয়ারসেল এর ফলাফলগুলি দেখার জন্য উন্মুক্ত থাকার জন্য আমার কি 'বিরতি' কমান্ডের সমতুল্য কিছু যুক্ত করা দরকার?
মাইকেল আলেকজান্ডার

pauseবৈধ পাওয়ারশেল কমান্ড। আপনার .lnkপরিবর্তে পাবলিক ডেস্কটপে রয়েছে কিনা তা পরীক্ষা করে দেখুন Get-ChildItem "$env:PUBLIC\Desktop\*.lnk"
জোসেফজেড

@ মিশেল অ্যালেক্সান্ডার দয়া করে আমার আপডেট হওয়া উত্তর দেখুন।
জোসেফজেড

ঠিক আছে, দুর্দান্ত! ধন্যবাদ. আমি এখন সেই লিঙ্কটির সম্পূর্ণ লক্ষ্যবস্তু পাচ্ছি। পরবর্তী অংশে আমি চেষ্টা করছিলাম, যদি সম্ভব হয় তবে হয় হয় "http; // 123.45.67.89" আইপি ঠিকানা ফিল্টার বা নিষ্কাশন করা। এটা কি কিছু করা যায়? আমি এটি যতটা সম্ভব ব্যবহারকারী বান্ধব এবং সহজ হওয়ার চেষ্টা করছি যাতে তাদের সম্পূর্ণ লিঙ্ক থেকে আইপি ঠিকানাটি খুঁজে বের করতে না হয়। আমি কিছু লোকের সাথে কাজ করি না তারা জানেন যে কোনও আইপি ঠিকানাটি কী।
মাইকেল আলেকজান্ডার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.