הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   העברת פרמטר עם עברית בCMD (https://hosts.co.il/forums/showthread.php?t=93627)

Erez | TrustMedia.co.il 25-11-11 14:19

העברת פרמטר עם עברית בCMD
 
אני עובד כרגע על תוכנה מסויימת שעובדת עם קובץ EXE חיצוני שמקבל נתיב של קובץ ומחזיר לי מידע עליו. אז יצרתי קובץ BAT שיקבל כפרמטר את הנתיב לקובץ ויפעיל את הEXE עם הנתיב של הקובץ. ואת הקובץ BAT אני מריץ דרך התוכנה.

משהו כזה:

זה התוכנה:
קוד:

Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("test.bat \""+path+"\"");

וזה הBAT:
קוד:

cd clientdir
client -paramter %1

הבעיה היא שלפי מה שהבנתי אין אפשרות להעביר בפרמטר עברית, ואם אני מעביר עברית אז זה עושה שגיאה.

מישהו מכיר פיתרון לבעיה?

תודה

עריכה:
ניסיתי להיפטר מהקובץ BAT ולעשות הכל בפקודה אחת ככה:
קוד:

Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("cmd /U /c \"cd clientdir && client -para \""+path+"\"\"");

אבל עדיין זה לא עובד עם עברית :/

דור 26-11-11 04:18

השגיאה באה מתוך התוכנה שאתה מריץ (exe) או מתוך הcmd? מה בעצם התשובה שאתה מקבל בעת ההרצה?

daNN 26-11-11 05:37

לא כלכך מובן על איזה פרמטר מדובר שגורם לך לשגיאה.. האם זה בתוכנה? או בקובץ Bat?
אם זה בקובץ ריצה (exe)
- האם זאת שגיאת קומפליציה או שגיאת ריצה?
- מה השגיאה?

- אם זה בקובץ Bat
ה Command Prompt לא תומך בעברית

Erez | TrustMedia.co.il 26-11-11 17:41

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

דור 26-11-11 17:44

הcmd לא ממש תומך בעברית, זה מציג גי'בריש. אבל זה לא בעיה, זה כן אמור לפתוח.

אני חושב שהבעיה שבקוד שכתבת אתה צריך לתמוך בunicode, אולי להמיר את הpath שנתת לutf-8 וכך זה כן ייפתח (אבל עדיין יציג גי'בריש כי ה cmd לא תומך בעברית)

Erez | TrustMedia.co.il 26-11-11 19:37

קוד:

FILECHOOSE:

JFileChooser fc = new JFileChooser();
fc.showOpenDialog(null);
String response = Fingerprint.getFingerPrint(fc.getSelectedFile().getAbsolutePath());

FINGERPRINT:

static String getFingerPrint(String path) {
        try {
                Runtime rt = Runtime.getRuntime();
                Process pr = rt.exec("cmd /A /c \"cd lastfmclient && lastfmfpclient -nometadata \""+path+"\"\"");
               
                BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream()));
               
                String line=null;
                while((line=input.readLine()) != null) {
                  System.out.println(line);
                }
               
    } catch(Exception e) {
                return e.toString();
    }
}

החלק הראשון זה החלק שמקבל את הנתיב של הקובץ שהמשתמש בחר, והחלק השני זה הקוד שמקבל את הקובץ ומדפיס את הפלט של התוכנית שאני משתמש בה כדי לעבד את הקובץ.
אבל כמו שאמרתי בעברית זה עובד ובאנגלית זה לא. ניסיתי גם ידנית מהCMD לרשום לו שם את הנתיב בעברית (הוא שינה לג'יבריש) וזה גם לא עבד. ניסיתי בהגדרות של השורה שזה ירוץ ביוניקוד וגם בASCII (ה\A שמופיע בשורת הפקודה בקוד) ולא עזר :/

תודה על העזרה


כל הזמנים הם GMT +2. הזמן כעת הוא 21:12.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ