Help with C# application

tobenary

New member
Help with C# application

היי, אני לא מתכנת, אבל ברשותי קוד שקיבלתי מחבר לעבודה ואני מעוניין לשנות אותו למשהו יותר טוב שיעזור לי.

מטרת התוכנית ( המקורית ) היא לחפש בשורה מסויימת את התו באקסלאש ( \ ) ולהחזיר את המילה האחרונה שלו.
הבעייה, שאני מקבל את המילה האחרונה שהיא פרוססניים, ואני צריך את ה FULL-PATH.

שורה של לוג נראית כך ( דוגמא )
קוד:
2018-05-09T06:16:20 3648  13764 ProcMon.cpp          527  TRACE Hashed: 4147B73B1224BF0D778D57B0D1391C6EE043FCFE, pid: 20548, Image: \??\C:\windows\system32\cscript.exe
2018-05-09T08:59:50 51736 52148 ProcMon.cpp          527  TRACE Hashed: 0862BAE3DC3A0B5C609867D1A7086F1954F2F556, pid: 46228, Image: \SystemRoot\System32\Conhost.exe


בקטע קוד המקורי אני רואה שיש את השורה הבאה:
var process = line.Split('\\').Last();
שתמיד מחזירה לי ( בדוגמא זו ) Conhost.exe ו cscript.exe
חשבתי על לשנות את התו לנקודותיים, וכך אקבל או:
\windows\system32\cscript.exe
או \SystemRoot\System32\Conhost.exe
אבל התוכנה נתקעת לי כל הזמן ( ניסיתי להבין שעה איך אני עושה זאת - אני לא תוכניתן )

השורה היא 105 או 106

לאחר מכן, אני לוקח את הפלט לאקסל ומסדר שם לפי ALL
ורואה איזה אפליקציה עובדת הרבה פעמים.
 

BravoMan

Active member
הבעיה עם הקוד היא, שהוא משתמש

ב-"מילה" שהוא חתך בתור שם לקובץ שהוא יוצר.
&nbsp
ברגע שאתה לוקח את כל ה-path, במקום ליצור קובץ בתיקייה בה הרצת את התוכנית, הוא מנסה ליצור קובץ בספריית מערכת, ולזה כנראה אין לו הרשאות.
&nbsp
הדבר הנכון במקומך לעשות היה אחד מהשניים:
1. לבקש מהחבר שיתקן לפי מה שאתה צריך.
2. להשתמש בכלים של משהו כמו PowerShell להשיג את מה שאתה רוצה.
&nbsp
אם היית עובד בלינוקס אפשר היה לפתור את זה עם שורה או שניים במסוף, אבל מן הסתם זו לא הסביבה שלך.
&nbsp
בכל אופן, לפי מה שאני רואה, החיתוך משמש רק לשם הקובץ.
אז לא ברור למה אתה צריך את כל ה-path, ולאן בדיוק אתה רוצה לדחוף את ה-path המלא.
&nbsp
אם תסביר יותר טוב, אולי ניתן יהיה להתאים את הקוד.
 

tobenary

New member
הסבר הקוד

ברגע שאתה לוקח את כל ה-path, במקום ליצור קובץ בתיקייה בה הרצת את התוכנית, הוא מנסה ליצור קובץ בספריית מערכת, ולזה כנראה אין לו הרשאות.

הבנתי את הבעייה שאני יצרתי... אי אפשר לשנות את הפלט ל"שם קובץ" עם כל ה PATH?

התוכנה אמורה לעשות את הפעולות הבאות:
מה היא אמורה לעשות בגדול:
1. מקבלת ספרייה שבא היא תרוץ על כל אחד מהפיילים ( הלוגים שיש שם )
2. "להוציא" מהלוגים את הפרמטר שנמצא אחרי המילה:
IMAGE:
א. אם יש "\??\" להתעלם ולקחת את מה שבא אחריו.
3. לסכום כמה פעמים חזרה הפעולה הזו, את זה סוכמים עם הפרמטר HASH
4. להוציא פלט CSV לאקסל רק עם המספרים הסופיים.

מה היא עושה כרגע:
1. מקבלת ספרייה שבא היא תרוץ על כל אחד מהפיילים ( הלוגים שיש שם )
2. "להוציא" מהלוגים את הפרמטר שנמצא אחרי המילה:
IMAGE:
3. לסכום כמה פעמים חזרה הפעולה הזו, את זה סוכמים עם HASH
א. אם היה את ההאש הזה כבר (אם קובץ PAR נמצא ), אז תוסיף "1" לקובץ ALL
ב. אם לא, תיצור קובץ PAR

4. אני בעצם מייצא את הפלט לאקסל ומריץ עוד חיתוכים כי אינני זקוק לקבצי PAR ואז אני יכול לחתוך כמה פעמים פרוסס מסויים "העמיס" לי על הלוג.
5. אני צריך למחוק ידנית את קבצי ה PAR ואת ALL שנוצרו בספריית ההרצה...
 

BravoMan

Active member
מן הסתם, כדי ליצור שם קובץ מ-path אתה צריך להחליף את כל

ה-\ בתו אחר, אחרת זה לא יהיה שם קובץ חוקי.
 
למעלה