Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

Tastaturcodeabfrage in einer Batch-Datei !

xlh / 12 Antworten / Flachansicht Nickles

Hallo Leute,


also als erstes möchte ich ganz kurz darauf hinweisen, das es in diesen Thread eigentlich um 2 Dinge geht, die in einer Batch-Datei ablaufen sollen. Nur wenn ich dieses als Betreff angegeben hätte, hätte ich schon alleine, ein 5 Zeilen Betreff gehabt und dann hat man ja auch keine Lust mehr sich das überhaupt noch durch zu lesen.


Nun denn, ... dann fange ich mal an. Ich habe ein riesen großes Problem und zwar geht es darum das ich gerne eine Batch-Datei schreiben möchte, die sobald ich sie starte, mir erstmal anzeigt was alles für Festplatten in dem Computer vorhanden sind, so zusagen eine Ansicht, wie als ob ich "dir c:\" eingeben würde, nur halt nicht die Übersicht von den Ordnern in der Festplatte "xxx", sondern eine schöne Ansicht, mit den ganzen Festplatten. Danach soll sie mich fragen auf welche Festplatte, ich zugreifen will (z.B. C:\ ; D:\ ; usw.) und das ich dann, den Laufwerksbuchstaben angebe und mit der Eingabetaste bestätige, ohne das er aber die Batch-Datei abbricht oder stoppt. Die Batchdatei soll nur, warten bis ich z.B. C:\ eigegeben habe, auf das laufwerk C:\ dann auch wechseln soll und das sie dann mit ihren eigentlichen Aufgaben weiter machen soll, sobald ich die Abfrage (C:\) mit der Eingabetaste bestätigt habe. Sobald ich dann die Abfrage bestätigt habe, soll die Batch-Datei, mir dann eine Übersicht geben, was in der Festplatte als Inhalt vorhanden ist und mich dann fragen soll, in welchen Ordner ich wechseln möchte und wieder auf die Eingabetaste wartet, bis ich den Ordner "xxx" angegeben habe und bestätigt habe und dann wieder erst dann mit ihrer eigentlichen Aufgabe weiter macht ohne Abbruch oder Stop der Batch-Datei. Sie soll danach, dann natürlich auch dort ins Verzeichnis wechseln.


So, sobald ich dann die Festplatte und danach den Ordner angegeben habe, soll sie mit einer " IF exist" Abfrage, schauen ob auf der Festplatte und in dem Ordner den ich angegeben habe, die Datei : x:\xxx\0001\0002\xyz.dat existiert oder nicht. Wenn ja dann soll sie zur Sprungmarke " :Weiter " wechseln und die nächste Aufgabe machen, wenn nicht soll sie zur Sprungmarke " :Abbruch " gehen.


SO, ... mein Problem ist das ich das irgendwie überhaupt nicht hinkriege, eine Batch zu programmieren, die mir eine Komplett-Übersicht über die Festplatten gibt und die mich fragt auf welche Festplatte ich will und dann sobald ich den Laufwerksbuchstaben angegeben habe und ich die Eingabetaste drücke mit ihrer nächsten Aufgabe weiter macht. So bald ich dieses versuche steht dann da nur: c:\ im DOS und macht bei Druck auf die Eingabetaste nicht weiter mit der Batch. Ich habe aber mal was gelesen das es eine " IF ReadKey=#" Abfrage gibt oder so ähnlich. Habe schon alles durch gegooglet, aber kam nie zu Recht mit den Ergebnissen, weil Sie entweder nur für Turbo Pascal waren oder irgend eine andere sch...sse geliefert haben. Sorry für den Ausdruck aber, ich bin echt so langsam verzweifelt.


Aber irgendwie muss es doch möglich sein das ich die Tastatureingabe abfrage und auf die Abfrage eine Reaktion bekomme. Tastaturcode-Tabelle habe ich schon (ASCII Werte in HEX und DEZ)


Ich poste mal was ich bisher schon geschaft habe ( ich weiss, ist nicht sehr viel, weil ich auch noch relativ NEU auf dem Gebiet der Batch-Programmierung bin, möcht aber unbedingt diese Sprache lernen und nicht Turbo Pascal oder anderes, auch wenn diese Sprachen mehr können) :


 


@echo off


cls


echo.


echo -------------------------------------------------------------------------------------------


echo -------------------------------------------------------------------------------------------


echo.


echo - "xxx File Archiver System" -


echo.


echo ------------------------------------------------------------------------------------------


echo -----------------------------------------------------------------------------------------


echo.


echo.


pause


cls


c:


dir /p


cd xxx


if exist \0001\0002\xyz.dat goto weiter


if not exist \0001\0002\xyz.dat goto abbruch


:weiter


cd \0001\0002


a:\rar.exe a -m5 c:\xyz.dat xyz.dat


cls


copy c:\xyz.dat a:\xyz.dat


cls


echo.


echo Archivierung wurde erfolgreich abgeschlossen !


:abbruch


cls


echo Archivierung ist fehlgeschlagen !


 


bei der Zeile " if exist \0001\0002\xyz.dat goto weiter " macht er aber irgenwie nichts, obwohl der Ordner existiert mit dieser Datei.


Er springt dann zu den Befehl " if not exist \0001\0002\xyz.dat goto abbruch ".


Warum?


Ich kann ja nicht den genauen Pfad eingeben, weil der Pfad bis zu einen gewissen Grad unbekannt ist, bzw variieren kann.


Geht ja wohl schlecht das ich den Pfad in der Batch mit " if exist c:\0000\\0001\0002\xyz.dat goto weiter " vorher schon festlege, wenn ich " d:\ " und dann den Ordner " 0003 " ausgewählt habe und in Wirklichkeit dort der Ordner und die Datei liegt.


Deswegen auch nur " if exist \0001\0002\xyz.dat goto weiter ", weil er vorher dann schon in den variierenden übergeordneten Ordner rein geht! Ich dachte wenn ich dann schon im


Ordner X:\xxx\ schon drin sei, das er das dann annehmen würde.


Ich weiss da wird noch einiges an Arbeit auf mich zu kommen und es wird noch einiges falsch an der Batch sein, aber egal ich bin dafür bereit.


Also, jetzt liegt es an euch. Ich komme echt nicht mehr weiter. Ich bitte euch bitte hilft mir, es wäre super wichtig. Falls es nicht anders geht als wie irgenlweche Programme unter DOS zu benutzen um manche Befehle abarbeiten zu können, ist nicht schlimm, hauptsache ist das es bei der Batch-Sprache bleibt und nicht bitte zu sagen, das ich versuchen soll Turbo-Pascal oder ähnliches zu erlernen. Ich will es auf jedenfall auf dem Wege der normalen Batch-Sprache schaffen.


Naja dann hör ich jetzt mal auf zu schreiben, der Thread ist sowieso schon lang genug,


Vielen Dank im voraus schon mal.


PS: Falls noch fragen sind, bin ganz Ohr, ich erwarte ja nicht sofort eine Lösung.


Aber trotzdem schon mal danke.


 


 

bei Antwort benachrichtigen