প্রসেস.স্টার্ট ব্যবহার করে একটি ফোল্ডার খুলুন


148

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

System.Diagnostics.Process.Start("explorer.exe", @"c:\teste");

আপনি কি নিশ্চিত যে আপনার পথটি সঠিক?
নাথান কোপ

1
আপনি কেন এক্সপ্লোরারকে ম্যানুয়ালি কল করতে চান? কেন কেবল ফোল্ডারটি খুলবেন না, অর্থাৎ প্রসেস কল করুন। UseShellExecute সহ একটি প্রসেসস্টার্টইনফোর সহ স্টার্টটি সত্যে সেট করুন এবং Verb "ওপেন" তে সেট করুন?
অরেগনহোস্ট

1
হ্যাঁ, আমি পথ ছাড়াই 'এক্সপ্লোরার এক্সেক্স' খোলার চেষ্টা করেছি এবং কোনও কাজও করি নি।
ড্যানিয়েল

ঠিক আছে, আমি পোস্ট করিনি কারণ প্রশ্নটি কোনও ফোল্ডারটি কীভাবে খুলতে হবে তা নয়, বরং কোনও ফোল্ডারটি খোলার জন্য কীভাবে এক্সপ্লোরারআর.সি.কে চালানো যায় তা নয়। আমি কেবল জানতে চেয়েছিলাম যে আপনি কেন প্রথম স্থানে সরাসরি এক্সপ্লোরারকে ডাকতে চান, কারণ কারণ থাকতে পারে;)
অরেগনঘস্ট

আমি এখানে অপশনগুলি বাদ দিতে চাই, সুতরাং এটি একটি মূ ?় প্রশ্ন হতে পারে: আপনি লিনাক্সে মনো ব্যবহার করে এটি করছেন না, তাই না? আমরা কি উইন্ডোজ পরিবেশের কথা বলছি?
ফ্রেডরিক মের্ক

উত্তর:


266

আপনি কি নিশ্চিত করেছেন যে " c:\teste" ফোল্ডারটি বিদ্যমান আছে? যদি এটি না হয় তবে এক্সপ্লোরার কিছু ডিফল্ট ফোল্ডার (আমার ক্ষেত্রে " C:\Users\[user name]\Documents") খুলবে ।

হালনাগাদ

আমি নিম্নলিখিত বিভিন্নতা চেষ্টা করেছি:

// opens the folder in explorer
Process.Start(@"c:\temp");
// opens the folder in explorer
Process.Start("explorer.exe", @"c:\temp");
// throws exception
Process.Start(@"c:\does_not_exist");
// opens explorer, showing some other folder)
Process.Start("explorer.exe", @"c:\does_not_exist");

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

  • রান ডায়ালগটি খুলুন, "এক্সপ্লোরার এক্সেক্স" লিখুন এবং এন্টার টিপুন
  • কমান্ড প্রম্পটটি খুলুন, "এক্সপ্লোরার এক্সেক্স" টাইপ করুন এবং এন্টার টিপুন

ঠিক আছে, আমি নিশ্চিত এবং যদি এটি না থাকে তবে কোনও ফোল্ডারও কি একইভাবে খুলতে হবে, না?
ড্যানিয়েল

ঠিক আছে, তবে এটি পরিবেশের সমস্যা হতে পারে .. আমি সেন্টিমিটারের মাধ্যমে এক্সপ্লোরারআরএক্সএইসি খুললাম এবং সাধারণ খোলামেলা .. প্রক্রিয়াগুলির কোনওটিই শুরু করে না art এটি একটি ব্যতিক্রম
ড্যানিয়েল

1
যদি সেই এক্সপ্লোরার উইন্ডো ইতিমধ্যে খোলা থাকে তবে ছোট পার্থক্য: Process.Start(path) উইন্ডোটি সক্রিয় করে (কেবলমাত্র টাস্ক বারে ঝলক দেওয়া হতে পারে, সামনে আনেনি); explorer.exe+ প্যারামিটার সর্বদা সামনে একটি নতুন উইন্ডো খোলে (তবে একই উইন্ডোতে একাধিকবার)। সুতরাং উভয়ের ক্যাভেটস রয়েছে।
কেকুসেমাউ

Process.Start(@"c:\temp")অবশ্যই সাবধানতার সাথে ব্যবহার করা উচিত। যদি c:\temp.comউপস্থিত থাকে তবে তার c:\temp.comপরিবর্তে ফাংশন কলটি খুলবে । আরও বিশদের জন্য ফোরাম.আইআইএস.এন.পি . / 1239773/2144186.aspx দেখুন ।
লেক্স লি

নোট যেটি বা অন্য Process.Start(@"c:\temp")কোনও ফোল্ডার খোলার ক্ষেত্রে সংবেদনশীল । এই সমস্যাটি দেখুন যেখানে ভিএস নিজেই বগি আচরণ প্রদর্শন করে । আপনি ভেরিয়েন্টটি ব্যবহার করে বা (আরও ভাল, আইএমও) সর্বদা একটি যুক্ত করে এড়াতে পারেন । উদাহরণস্বরূপ ,। C:\temp.exeC:\temp.cmdexplorer.exePath.DirectorySeparatorCharProcess.Start(@"C:\temp\")
বিনকি

46

কেবল সম্পূর্ণতার জন্য, আপনি যদি যা করতে চান তা হ'ল কোনও ফোল্ডার খুলতে হয়, এটি ব্যবহার করুন:

System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo() {
    FileName = "C:\\teste\\",
    UseShellExecute = true,
    Verb = "open"
});

নিশ্চিত করুন যে ফাইলনামটি Path.DirectorySeparatorCharএটিকে কোনও ফোল্ডারে অবিশ্বাস্যভাবে নির্দেশ করতে শেষ হয় । (@ বিঙ্কিকে ধন্যবাদ।)

এই সমাধানটি কোনও ফোল্ডার খোলার এবং কোনও আইটেম নির্বাচন করার জন্য কাজ করবে না, কারণ এর জন্য কোনও ক্রিয়া মনে হচ্ছে না।


এটি আমার জন্য উইন্ডো এবং লিনাক্সে মনো ব্যবহার করে কাজ করে।
মেন্নো দেইজ - ভ্যান রিজস্বিক

1
আপনি যদি এই পদ্ধতিটি এবং ফোল্ডার যেমন ব্যবহার করে C:\teste.exeবা ব্যবহার করেন তবে C:\teste.cmdএক্সপ্লোরার আপনার ইচ্ছা অনুযায়ী পরিবর্তে সেই অন্য ফোল্ডারে খুলবে। এটি এড়াতে, আপনি একটি Path.DirectorySeparatorCharপথে সংযোজন করতে পারেন । দেখুন কীভাবে ভিএস নিজেই একই ভুল করে
বিনকি

"/ সিলেক্ট" ব্যবহার করে @ সিসিসিওনের উত্তর দেওয়া, আপনি ভাবেন যে আপনি ব্যবহার করতে পারেন Verb = "select"তবে হায় হায় আপনি পারবেন না। নির্বিশেষে, দুর্দান্ত উত্তর!
ইডব্রি

1
উপরের স্বীকৃত উত্তরের মত নয়, এটি নেট কোর 3 এ আমার জন্য কাজ করে। সেটিং Verb = "open"প্রয়োজনীয় ছিল না। (উইন্ডোজে পরীক্ষিত, অন্যান্য ওএসের ভিন্নতা থাকতে পারে))
ওয়াল্ট ডি

আপনি .Verbsসম্পত্তি থেকে প্রযোজ্য ক্রিয়াগুলি পেতে পারেন ProcessStartInfo( ডকস.মাইক্রোসফট.ইন
ইউএস

16

আপনি যদি ফাইল বা ফোল্ডারটি নির্বাচন করতে চান তবে আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন:

Process.Start("explorer.exe", "/select, c:\\teste");

2
কোনও ফোল্ডারটি নির্বাচনের পরিবর্তে এটি খোলার জন্য কেবল পরিবর্তন /selectকরুন/open
সুশীগুয়ে

5

আপনি @ চিহ্ন ব্যবহার করছেন, যা আপনার ব্যাকস্ল্যাশ থেকে পালানোর প্রয়োজনীয়তা সরিয়ে দেয়।

@ সরান বা or এর সাথে প্রতিস্থাপন করুন \


তবুও ফোল্ডারটি খুলছে না .. কেবলমাত্র টাস্ক ম্যানেজার @ প্রক্রিয়া শুরু করুন
ড্যানিয়েল

আমার আর কোনও পরামর্শ নেই, আমি ভিজ্যুয়াল সি # এক্সপ্রেস
২০০ in-

1
আমি বলব ... জেব্রা। আপনার এক্সপ্লোরারটির সাথে কিছু ভুল আছে, হতে পারে ভাইরি বা কিছুটা ...
আর মার্টিনহো ফার্নান্দেস

4

আনসকেপড স্ট্রিংগুলি ব্যবহার করার সময় আপনার ডাবল ব্যাকস্ল্যাশ দরকার নেই:

System.Diagnostics.Process.Start("explorer.exe",@"c:\teste");

3

আপনার একটি System.Diagnostics.Process.Start()ওভারলোড ব্যবহার করা উচিত । এটা বেশ সহজ!

আপনি যে প্রক্রিয়াটি চালাতে চান তা ফাইলের নাম না রাখলে ( explorer.exeসিস্টেম) এটি বৈধ ফোল্ডার পাথ হিসাবে স্বীকৃতি দেবে এবং এটি ইতিমধ্যে চলমান এক্সপ্লোরার প্রক্রিয়ার সাথে সংযুক্ত করার চেষ্টা করবে। এই ক্ষেত্রে, ফোল্ডারটি ইতিমধ্যে খোলা থাকলে, এক্সপ্লোরার কিছুই করবে না।

আপনি যদি প্রক্রিয়াটির ফাইলের নাম রাখেন (যেমনটি করেছিলেন), সিস্টেমটি প্যারামিটার হিসাবে দ্বিতীয় স্ট্রিংটি পাস করে প্রক্রিয়াটির একটি নতুন উদাহরণ চালানোর চেষ্টা করবে। যদি স্ট্রিংটি একটি বৈধ ফোল্ডার হয় তবে এটি সদ্য নির্মিত প্রক্রিয়াতে খোলে, যদি না হয় তবে নতুন প্রক্রিয়া কিছুই করবে না।

আমি জানি না যে কোনও পরিস্থিতিতে প্রক্রিয়া দ্বারা কীভাবে অবৈধ ফোল্ডার পাথগুলি আচরণ করা হয়। System.IO.Directory.Exists()এটি নিশ্চিত করার জন্য ব্যবহার করা যথেষ্ট হবে।


আপনার একটি সংযোজন করা দরকার তা ভুলে যাবেন না Path.DirectorySeparatorChar। অন্যথায়, যদি একই নামের একটি ফোল্ডারটি .cmdবা .exeবা সম্ভবত অন্যান্য প্রত্যয়গুলিও উপস্থিত থাকে তবে এক্সপ্লোরার সেই অন্য ফোল্ডারে খুলবে — অথবা যদি সেগুলি প্রকৃতভাবে এক্সিকিউটেবল বা স্ক্রিপ্ট হয় তবে এটি আপনার ইচ্ছা অনুযায়ী ফোল্ডারটি খোলার পরিবর্তে এগুলি চালিত করবে।
বিনকি

1

পদ্ধতির একটি ওভারলোডেড সংস্করণ ব্যবহার করুন যা কোনও প্রসেসস্টার্টআইফোন উদাহরণ গ্রহণ করে এবং আপনার জন্য কাজ করে এমন কোনও মানটিতে প্রসেসউইনডো স্টাইল সম্পত্তি সেট করে।


1

আপনি যখন সাইন সাইনটি ব্যবহার করে তখন আপনি ব্যাকস্ল্যাশ থেকে বাঁচাচ্ছেন।

System.Diagnostics.Process.Start("explorer.exe",@"c:\teste");

1
System.Diagnostics.Process.Start("explorer.exe",@"c:\teste"); 

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


1

আমি এই সমস্যাটি ছিলাম, এবং কেন আমি তা খুঁজে পেয়েছি। আমার কারণ এখানে তালিকাভুক্ত নয় সুতরাং যে কেউ এই সমস্যাটি পান এবং এর মধ্যে কেউই এটি ঠিক করে না।

আপনি যদি অন্য ব্যবহারকারী হিসাবে ভিজ্যুয়াল স্টুডিও চালনা করেন এবং প্রক্রিয়াটি ব্যবহার করার চেষ্টা করেন তবে এটি সেই ব্যবহারকারীদের প্রসঙ্গে চলে এবং আপনি এটি আপনার পর্দায় দেখতে পাবেন না।


0

স্ট্রেঞ্জ।

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

আপনি বলেছিলেন এক্সপ্লোরারের আর একটি অনুলিপি টাস্ক ম্যানেজারে উপস্থিত হয় তবে আপনি এটি দেখতে পারেন না।

এটি কি সম্ভব যে এটি অফস্ক্রিনটি খুলছে (অর্থাত্ অন্য মনিটর)?

বা আপনি কোনও সুযোগে একটি অ-ইন্টারেক্টিভ পরিষেবাতে এটি করছেন?


আমার কাছে কেবল একজন মনিটর রয়েছে এবং "আপনি বলেছিলেন যে এক্সপ্লোরারের আর একটি অনুলিপি টাস্ক ম্যানেজারে উপস্থিত হয়েছে, তবে আপনি এটি দেখতে পারবেন না" " এটা ঠিক .. আপনি কী বলতে চাইছেন তা আমি জানি না "বা কোনও সুযোগে আপনি কোনও অ-ইন্টারেক্টিভ পরিষেবাতে এটি করছেন?"
ড্যানিয়েল

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

0

আপনি যখন আপনার প্রারম্ভিক মেনু থেকে "এক্সপ্লোরার এক্সেক্স সি: es টেস্ট" চালাবেন এটি কি সঠিকভাবে খোলে? আপনি কতক্ষণ ধরে এই চেষ্টা করছেন? আমার মেশিনটিতে প্রচুর প্রক্রিয়া হয় এবং আমি যখন একটি নতুন প্রক্রিয়া খুলি (সেটগুলি আইই বলে) খোলাম তখন আমি একটি অনুরূপ আচরণ দেখি .. এটি টাস্ক ম্যানেজারে শুরু হয় তবে সামনের প্রান্তে প্রদর্শিত হবে না। আপনি কি পুনরায় চালু করার চেষ্টা করেছেন?

নিম্নলিখিত কোডটি একটি নতুন এক্সপ্লোরার উদাহরণ খুলতে হবে

class sample{

static void Main()
{
  System.Diagnostics.Process.Start("explorer.exe",@"c:\teste");
}
}

0

আপনি যখন এটি চেষ্টা করছেন তখন কি আপনার প্রচুর অ্যাপ্লিকেশন চলছে? আমার মাঝে মাঝে অদ্ভুত আচরণের মুখোমুখি হয় কারণ আমার সিস্টেমটি জিডিআই হ্যান্ডলসের বাইরে চলে যায় কারণ আমার অনেকগুলি উইন্ডো খোলা আছে (আমাদের অ্যাপগুলি প্রচুর ব্যবহার করে)।

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

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

সীমা বাড়াতে আপনি একটি রেজিস্ট্রি টুইট করতে পারেন twe

আরও তথ্যের জন্য দেখুন http://msdn.microsoft.com/en-us/library/ms724291(VS.85).aspx


0

System.Diagnostics.Process.Start("explorer.exe",@"c:\teste");

কেবল পথ পরিবর্তন করুন বা এটিতে ঘোষণা করুন string

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