عملية.بدء اسم الملف باستخدام ٪ درجة الحرارة%
-
12-12-2019 - |
سؤال
لسبب غريب على فشل هذا الرمز:
p.StartInfo.FileName = @"%temp%\SSCERuntime_x86-ENU.msi";
وهذا الرمز ناجح:
p.StartInfo.FileName = @"C:\Users\USERNAME\AppData\Local\Temp\SSCERuntime_x86-ENU.msi";
هل هناك أي سبب أنا في عداد المفقودين?
ملاحظة أنا فقط نسخ المسار ، وأنا لا أعتقد أن هناك حاجة إلى بقية التعليمات البرمجية ولكن سأضعها على أي حال:
Process p = new Process();
p.StartInfo.FileName = @"%temp%\SSCERuntime_x86-ENU.msi";
p.StartInfo.Arguments = "/passive";
p.Start();
المحلول
ال Process
فئة لا يوسع السلاسل مع متغيرات البيئة (أي. %temp%
).
إذا كنت ترغب في استخدام متغيرات البيئة لبناء FileName
الممتلكات ثم سيكون لديك للحصول على متغيرات البيئة (باستخدام GetEnvironmentVariable
الطريقة على ال Environment
فئة) وقم بإجراء الاستبدال بنفسك ، مثل ذلك:
// Construct the path.
string temp = Environment.GetEnvironmentVariable("temp");
string path = Path.Combine(temp, "SSCERuntime_x86-ENU.msi");
// Launch the process.
Process p = new Process();
p.StartInfo.FileName = path;
p.StartInfo.Arguments = "/passive";
p.Start();
بالإضافة إلى ذلك ، يمكنك استخدام ExpandEnvironmentVariables
الطريقة مع سلسلة الأصلي الخاص بك مثل ذلك:
p.StartInfo.FileName =
Environment.ExpandEnvironmentVariables(@"%temp%\SSCERuntime_x86-ENU.msi");
نصائح أخرى
يتم تفسير جزء من السلسلة من السلسلة حرفيا بدلا من الاستعاضة عن متغير البيئة المناسبة.ستحتاج إلى توسيعها يدويا
giveacodicetagpre.٪ temp٪ يتم تحليلها وتقييمها بواسطة قذيفة الأوامر.يمكنك استخدام استخدام path.gettemppath () و path.combine لهذا الغرض.
giveacodicetagpre.يمكنك استخدام Environment.ExpandEnvironmentVariables
لتوسيع متغيرات البيئة داخل سلسلة ، ثم تمرير ذلك إلى Process
فئة:
p.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%temp%\SSCERuntime_x86-ENU.msi");
هذا له فوائد إضافية تتمثل في
- العمل لأي متغير البيئة (٪أبداتا٪ ، ٪ كومونبروغرامفيلز٪ ، الخ) ، و
- العمل في أي مكان في السلسلة (على سبيل المثال ."٪درجة الحرارة٪ \ ٪ اسم المستخدم٪ \ فو.النص")
جرب هذا:
giveacodicetagpre.ثم Concat IT:
giveacodicetagpre.فازني كاسبر على المثقب على التفسير، ولكن الطريقة العملية. تعامل الأساس بشكل أساسي حرفيا بدلا من إتسلابها كما كانت الشل.