পাওয়ারশেল স্ক্রিপ্ট ব্যবহার করে একটি EXE ফাইল কার্যকর করা হচ্ছে


111

আমি পাওয়ারশেল স্ক্রিপ্ট ব্যবহার করে একটি EXE ফাইল চালানোর চেষ্টা করছি। যদি আমি কমান্ড লাইনটি ব্যবহার করি তবে এটি কোনও সমস্যা ছাড়াই কাজ করে (প্রথমে আমি এক্সিকিউটেবলের নাম সরবরাহ করি এবং এটি শুরু করার জন্য প্যারামিটারগুলির সিরিজ সরবরাহ করি):

"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode

তবে স্ক্রিপ্টের ঠিক একই জিনিসটি করা একটি ত্রুটি দেয়:

শব্দ "" সি: \ প্রোগ্রাম ফাইলস \ স্বয়ংক্রিয় QA \ TestExecute 8 E বিন \ TestExecute.exe "সি: \ টেম্পি \ TestProject1 \ TestProject1.pjs / চালান / প্রস্থান / সাইলেন্টমোড ' একটি সেমিডলেট, ফাংশন হিসাবে স্বীকৃত নয় , স্ক্রিপ্ট ফাইল বা অপারেবল প্রোগ্রাম। নামের বানানটি পরীক্ষা করুন বা কোনও পথ অন্তর্ভুক্ত থাকলে, पथটি সঠিক কিনা তা যাচাই করুন এবং আবার চেষ্টা করুন।

(আমি "এবং" অপারেটরটি ব্যবহার করে কমান্ডটি প্রার্থনা করেছি))

আমি কিভাবে এই সমস্যা ঠিক করতে পারবো?


4
আপনার কোড পোস্ট করুন, দয়া করে। যেহেতু সমস্যাটি এখানে রয়েছে তাই এটি দেখার পক্ষে অনুমান করার চেয়ে অনেক সহজ।
কোডি গ্রে

উত্তর:


122
& "C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode

অথবা

[System.Diagnostics.Process]::Start("C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe", "C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode")

আপডেট: দুঃখিত আমি মিস করেছি "(" & "অপারেটর)" বাক্যটি ব্যবহার করে আমি আদেশটি চেয়েছিলাম। আমি যখন গতিশীল দিকটি মূল্যায়ন করছিলাম তখন আমার এই সমস্যা হয়েছিল। দাওয়াত-এক্সপ্রেশন নির্মাণ চেষ্টা করুন:

Invoke-Expression "& `"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe`" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode"

অদ্ভুত যে মূল প্রশ্নের কমান্ডটি প্রায় ঠিক আমার পক্ষে PS2.0 এর একটি ভিএম-তে কাজ করে। কিন্তু সেই একই কমান্ডটি এখন PS4.0 সিস্টেমে ব্যর্থ। আকর্ষণীয়ভাবে যথেষ্ট, আমি টেস্টএক্সেকিউটকেও ফোন করছি। আমি মনে করি আমার পছন্দ 2 অপশনটি সবচেয়ে ভাল, আমি একটি শট দেব, ধন্যবাদ!
EJA

33

দেখে মনে হচ্ছে আপনি EXE এবং এর প্রথম যুক্তি উভয়ই একটি একক স্ট্রিংয়ে উল্লেখ করছেন; '"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode'। এটি কাজ করবে না। সাধারণভাবে আপনি একটি দেশীয় কমান্ডের অনুরোধ করেন যার পথে এর মতো জায়গা থাকে:

& "c:\some path with spaces\foo.exe" <arguments go here>

এটি এমন &একটি স্ট্রিং অনুসরণ করবে যা একটি কমান্ড শনাক্ত করে: সেমিডলেট, ফাংশন, নেটিভ এক্সিটি আপেক্ষিক বা পরম পথ।

একবার আপনি এই কাজ পেয়ে যাবেন:

& "c:\some path with spaces\foo.exe"

প্রয়োজনীয় হিসাবে যুক্তিগুলির উদ্ধৃতিতে কাজ শুরু করুন। যদিও দেখে মনে হচ্ছে আপনার যুক্তিগুলি ঠিক ঠিক হওয়া উচিত (কোনও স্থান নেই, পাওয়ারশেলের দ্বারা ব্যাখ্যা করা কোনও বিশেষ বিশেষ অক্ষর নেই)।


2
স্ক্রিপ্ট এবং এক্সে একই ফোল্ডারে থাকলে পুরো পথ ব্যতীত পাওয়ারশেল স্ক্রিপ্টটি কার্যকর করা যায় কি? না কি কোনও আপেক্ষিক পথ ব্যবহার করা সম্ভব?
guanome

7
যদি এক্সি একই ফোল্ডারে থাকে তবে আপনি এটি করতে পারেন .\foo.exeএবং আপনি ..\..\foo.exeফাঁকা স্থানের সাথে কোনও আপেক্ষিক পথ এবং একটি আপেক্ষিক পথও ব্যবহার করতে পারেন & '..\..\path with spaces\foo.exe'
কিথ হিল

আপনি যদি পাইপ চেয়ে কোট ব্যবহার করা উচিত আপনার কমান্ড মধ্যে: cmd /c "C:\temp\strarc.exe -cjd:M:\ | C:\temp\strarc.exe -s:8 -xd:N:\"
লার্কি

2

পাওয়ারশেলের সিডিতে .exe ফাইলের স্থানে সিডি করুন। উদাহরণ স্বরূপ:

সিডি সি: \ ব্যবহারকারী \ প্রশাসক \ ডাউনলোডগুলি

পিএস সি: \ ব্যবহারকারী \ প্রশাসক \ ডাউনলোডগুলি> & '\ aaa.exe'

ইনস্টলারটি পপ আপ হয় এবং স্ক্রিনে নির্দেশাবলী অনুসরণ করে।


আমি ঠিক কি চাই! একটি .exe ফাইল চালান & '\ aaa.exe'
শরীফ ইয়াজদিয়ান

2
  1. ক্লোন $ আর্গ
  2. আপনার অ্যারেগুলিকে নতুন অ্যারেতে চাপ দিন
  3. & $ পথ $ আরগস

ডেমো:

$exePath = $env:NGINX_HOME + '/nginx.exe'
$myArgs = $args.Clone()

$myArgs += '-p'
$myArgs += $env:NGINX_HOME

& $exepath $myArgs

Thx @ নোডোক্যাট, যুক্তিগুলির একটি দীর্ঘ দীর্ঘ তালিকা সহ একটি ডকার কমান্ড চালু করার জন্য একটি মন্ত্রীর মতো কাজ করেছিল।
দানিদেমি

1

বিকাশকারী না হয়ে আমি এক লাইনে একাধিক পিএস কমান্ড চালানোর সমাধান পেয়েছি। উদাহরণ:

powershell "& 'c:\path with spaces\to\executable.exe' -arguments ; second command ; etc

& (অ্যাম্পারস্যান্ড) এর আগে একটি "(ডাবল উদ্ধৃতি) স্থাপন করে এটি নির্বাহযোগ্যকে কার্যকর করে দেয়।


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