פורסם 2007 ביוני 1518 שנים אני מנסה לבנות מערכת שתקל על התקנה של ווינודוס דרך הרשת.אני עושה את זה בשביל אירגון מאוד קטן ועני לכן החלטתי לבצע את ההתקנות דרך SMB (על שרת SAMBA ).השתמשתי ב net boot disk ליצור דיסקט הפעלה עם סקריפט שעושה mount ל smb share שבה קבצי ההתקנה נמצאים ככונן X ומריץ את menu.bat שאמור להציג תפריט, לקלוט ערך מהמשתמש ולהריץ את תוכנית ההתקנה עם הפרמטרים המתאמים.יש לי 0 נסיון בכתיבת קבצי batch , אז אני מהבוקר כבר מנסה לבנות את הסקריפט האומלל הזה! עד כמה שהבנתי הדרך היחידה לקבל קלט מהמשתמש זה בעזרת תוכנה בשם choice.exe, לא מצאתי אותה בXP אז כתבתי אחת משלי. הבעיה היא בכמה משפטי IF שבודקים את ERRORLEVEL ש choice מחזירה ומשתמשים ב goto בשביל לקפוץ לקטע המתאים, וזה משום מה לא עובד לי...זה נראה שה IF הראשון תמיד אמת, לא משנה מה choice מחזירה כל עוד זה לא 0.זה הסקריפט: @echo offcolor 02:MENUclsecho --------------------------------------------------------------echo OS installation script V.0.01 echo --------------------------------------------------------------echo.echo.echo.echo 1 . Windows XP PRO SP2 - Hebrew.echo 2 . Windows XP PRO SP2 - English.echo 3 . Windows XP PRO SP2 - Hebrew , Fully unattended.echo 4 . Windows XP PRO SP2 - English ,Fully unattended.echo 5 . Reboot.echo 6 . Exit.echo.echo.echo Please choose a menu option: "CHOICE.exe" 123456IF ERRORLEVEL == 1 GOTO OP1IF ERRORLEVEL == 2 GOTO OP2IF ERRORLEVEL == 3 GOTO OP3IF ERRORLEVEL == 4 GOTO OP4IF ERRORLEVEL == 5 GOTO OP5IF ERRORLEVEL == 6 GOTO END IF ERRORLEVEL == 0 GOTO MENU:OP1 echo. echo OP1... GOTO END:OP2 echo. echo OP2... GOTO END:OP3 echo. echo OP3... GOTO END:OP4 echo. echo OP4... GOTO END:OP5 echo. echo OP5... GOTO END:END echo. echo Exiting...pause וזה הגירסה שלי ל CHOICE/*/ Quick and dirty replacement for CHOICE.EXE. / / 12:41 @ 15/06/2007/ V.0.01///*/#include <stdio.h>#include <ctype.h>int main(int argc, char *argv[]){ // short cs = 1; /* Case Sensitive */ // int time_out = 0; /* (If time_out > 0) Time out in seconds */ char usr_input; int x; if ( argc != 2 || strlen (argv[1]) == 0 ) return 255; /* wrong usage */ fflush (stdin); usr_input = getchar(); for ( x = 0; argv[1][x] != '\0'; x++ ) if ( toupper (argv[1][x]) == toupper (usr_input) ) return x+1; /* Found! */ return 0; /* Bad user input */ }
פורסם 2007 ביוני 1518 שנים אני לא חושב שצריכים להיות סימניי שוויון בכלל.תנסה לפי הסינטקס פה:http://www.robvanderwoude.com/errorlevel.html
פורסם 2007 ביוני 1518 שנים @echo offcolor 02:MENUclsECHO --------------------------------------------------------------echo OS installation script V.0.01 echo --------------------------------------------------------------ECHO.echo 1 . Windows XP PRO SP2 - Hebrew.echo 2 . Windows XP PRO SP2 - English.echo 3 . Windows XP PRO SP2 - Hebrew , Fully unattended.echo 4 . Windows XP PRO SP2 - English ,Fully unattended.echo 5 . Reboot.echo 6 . Exit.ECHO.ECHO.set choice=set /p choice=Please choose a menu option:if not '%choice%'=='' set choice=%choice:~0,1%if '%choice%'=='1' GOTO OP1if '%choice%'=='2' GOTO OP2if '%choice%'=='3' GOTO OP3if '%choice%'=='4' GOTO OP4if '%choice%'=='5' GOTO OP5if '%choice%'=='6' GOTO ENDECHO "%choice%" is not valid please try againECHO.goto MENUאני מקווה שעזר לך , תתחיל לפי זה
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.