@Danilo, damit habe ich schon gerechnet!
Um deine Augen zu schonen habe ich das mal in PB-Console und API umgeschrieben
So kann man Errorcodes auch ohne das Runprogramm() ausgeben.
Interessant ist, das ich die Datei trotzdem umbenennen konnte, es trotzdem eine Fehlermeldung gibt.
Aber vielleicht weist du mehr darüber.
Gruß, Falko
Nun eine Consoleanwendung mit PB und etwas API:
Sprünge sind somit dann auch rein mit goto und Sprungmarke:
möglich. Sogar auf bestimmte Fehler, die man dann an den jeweiligen
Sprungmarken ausgeben möchte.
Code: Alles auswählen
; Fehlerausgabe in Text, codeschnipsel von mk-soft
Procedure.s FormatMessage(ErrorNumber.l)
Protected *Buffer, len, result.s
len = FormatMessage_(#FORMAT_MESSAGE_ALLOCATE_BUFFER|#FORMAT_MESSAGE_FROM_SYSTEM,0,ErrorNumber,0,@*Buffer,0,0)
If len
result = PeekS(*Buffer, len - 2)
LocalFree_(*Buffer)
ProcedureReturn result
Else
ProcedureReturn "Errorcode: " + Hex(ErrorNumber)
EndIf
EndProcedure
Procedure MoveFile(Filename.s,NewPath.s)
If FileSize(Filename)>0
CopyFile(Filename,NewPath+"\"+GetFilePart(Filename))
DeleteFile(Filename)
Else
MessageRequester("Warnung","Die Datei ist nicht vorhanden!")
EndIf
EndProcedure
OpenConsole()
Path.s=GetEnvironmentVariable("USERPROFILE")+"\Desktop\"
ConsoleTitle("Test Batch")
If CheckFilename("irgendeinedatei.exe")
PrintN("Warum die Originalfile wie folgt umbennen?")
RenameFile(Path+"irgendeinedatei.exe",Path+"Backup"+FormatDate("%dd.%mm.%yyyy",Date())+".exe")
PrintN("Ich würde empfehlen, sie gleich mit einem neuen Namen zu kopieren")
CopyFile(Path+"Backup"+FormatDate("%dd.%mm.%yyyy",Date())+".exe",Path+"irgendeinedatei.exe")
PrintN("Und das Backup in einen Ordner kopieren")
If FileSize(Path+"NeuBackup")= -2
MessageRequester("Warnung!","Es ist schon ein Ordner vorhanden")
Else
CreateDirectory(Path+"NeuBackup")
EndIf
MoveFile(Path+"Backup"+FormatDate("%dd.%mm.%yyyy",Date())+".exe",Path+"NeuBackup")
EndIf
PrintN("hallo")
Print("Druecken sie irgendeine Taste....")
Input()
MessageRequester("LastError","Fehlercode: " +Str(GetLastError_())+#CRLF$+FormatMessage(GetLastError_()))
CloseConsole()
[Edit]
Habe den Fehler der Fehlermeldung gefunden, die wie folgt kam:
Messagebox hat geschrieben:---------------------------
LastError
---------------------------
Fehlercode: 5
Zugriff verweigert
---------------------------
OK
---------------------------
Dieses kommt nur, weil der debugger eingeschaltet war. Sobald ich den aus habe, kommt der korrekte
Fehlercode: 0 heraus.
Bei erneuten Start, kommt auch der korrekte Fehlercode: 2 heraus.
Dann viel Spass beim Weiterprogen, Jungs.
[/Edit]
[Edit2]
Habe den PB-Source mit weiteren Zeilen erweitert
Dies ist keine BAT-Datei !!!
[/Edit2]