![]() |
![]() |
|
![]() |
![]() |
|
Registrieren | Hilfe/Forumregeln | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Simulationen Alles zum Thema Simulation |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Inventar
|
![]() Stelle gerade mit entsetzen fest das meine DOS Kenntnisse derart verarmt sind das es nicht mal mehr zum erstellen einer Batch reicht. Mit 30 schon verkalkt?
Aufgabenstellung: In einem Verzeichnis ROOT befinden sich zwei Unterverzeichnisse, ALPHA und BRAVO. Inhalt ALPHA: alphax.ofd Inhalt BRAVO: bravox.ofd Inhalt ROOT: rootx.txt nun sollen per Batchdatei die sich in ROOT befindet wahlweise (per *errorlevel') folgende Optionen ermöglicht werden: User startet Batch. Auswahlmenü, 2 Punkte, Aa und Bb. Aa) Datei alphax.ofd aus ALPHA nach ROOT bei gleichzeitiger Umbenennung in rootx.txt Bb) Datei bravox.ofd aus BRAVO nach ROOT bei gleichzeitiger Umbenennung in rootx.txt Es soll also immer die in ROOT befindliche Datei rootx.txt durch eine der beiden Dateien aus den Unterverzeichnissen überschrieben werden wobei diese vorher umbenannt werden. Achtung: die jeweiligen Quelldateien dürfen (in ihren Quellverzeichnissen) nicht umbenannt werden und müssen dort immer verfügbar sein. Hilfä! |
![]() |
![]() |
![]() |
#2 |
Master
![]() Registriert seit: 13.01.2003
Alter: 50
Beiträge: 521
|
![]() Ich benutze für sowas ein kleines DOS-Programm mit dem Namen "Choice".
In früheren DOS-Versionen soll es diesen Befehl (bzw. dort wahrscheinlich auch ein Programm) wohl standardmäßig gegeben haben. Ich hab das kleine Tool (20kb) irgendwo im Internet gefunden (Quelle weiß ich leider nicht mehr). Auf Wunsch kann ich es dir per Mail schicken. Ich benutze die Batch um schnell eine INI-Datei für einen meiner Datenbank-Server auszuwählen. FFM=Frankfurt, RTP=Raleigh(USA), KL=Kuala Lumpur (Malaysia). meine Batch sieht dann so aus: @echo off cls echo select your Server echo 1 - FFM echo 2 - RTP echo 3 - KL choice /C:123 /N "ENTER NUMBER [1, 2, 3]:" if errorlevel 3 goto KL if errorlevel 2 goto RTP if errorlevel 1 goto FFM :FFM del c:\winnt\dmcl.ini /q copy c:\winnt\dmcl.ffm c:\winnt\dmcl.ini goto end1 :RTP del c:\winnt\dmcl.ini /q copy c:\winnt\dmcl.rtp c:\winnt\dmcl.ini goto end1 :KL del c:\winnt\dmcl.ini /q copy c:\winnt\dmcl.kl c:\winnt\dmcl.ini goto end1 :end1 echo finished Dies dürfte ja genau deine Anforderung erfüllen. ![]()
____________________________________
cya, artur |
![]() |
![]() |
![]() |
#3 |
Master
![]() Registriert seit: 13.01.2003
Alter: 50
Beiträge: 521
|
![]() weil es mich gerade interessiert hat, hab ich noch etwas im Internet gestöbert.
choice ist eine DOS-Programm aus Win9x, ab WinNT ist es nicht mehr dabei. Es läuft aber auch unter NT/Win2000/XP. Allerdings gibt es da auch andere Lösungen wie z.b: @echo off echo Choose [Y/N] ? :start set /P CH= if /I "%CH%"=="Y" goto yes if /I "%CH%"=="N" goto nop goto start :yes copy bla bla goto end :nop copy null goto end :end echo ENDE
____________________________________
cya, artur |
![]() |
![]() |
![]() |
#4 |
Inventar
|
![]() Vielen Dank - es wäre nett wenn Du mir das Teil schicken könntest, an meatwater@meatwater.com bitte.
Allerdings ist Deine Lösung nicht ganz geeignet: ich brauche etwas mit relativen Pfaden, nicht absoluten da ich den genauen Pfad nicht kenne in den der User die Anwendung installiert hat. |
![]() |
![]() |
![]() |
#5 |
Master
![]() Registriert seit: 13.01.2003
Alter: 50
Beiträge: 521
|
![]() Mit relativen Pfaden geht es nur, wenn die Batch-Datei im Verzeichnis liegt in der auch die Anwendung liegt. Sonst weiß die Batch-Datei ja nicht was sie tun soll.
Ein andere Möglichkeit wäre alle möglichen Pfade durchzuprobieren, was allerdings nicht ganz praktikabel ist. Der copy-Befehl würde dann so aussehen: copy alpha\alphax.ofd rootx.txt Funktioniert natürlich nur, wenn die Batch dort liegt, wo die rootx.txt auch wirklich hin soll und dort auch das alpha-Verzeichnis ist. Die Mail ist gleich unterwegs.
____________________________________
cya, artur |
![]() |
![]() |
![]() |
#6 |
Veteran
![]() Registriert seit: 27.06.2002
Alter: 46
Beiträge: 446
|
![]() Hallo zusammen,
passt zwar nicht ganz dazu, aber wie wäre es mit Perl ? Da gibt es soweit ich weiß auch keine Probleme mehr mit den rlativen Pfaden ... Grüße, Ingo |
![]() |
![]() |
![]() |
#7 | |
Inventar
|
![]() Zitat:
|
|
![]() |
![]() |
![]() |
#8 | |
Master
![]() Registriert seit: 13.01.2003
Alter: 50
Beiträge: 521
|
![]() Zitat:
Hab ich einen Ordner c:\test mit den Unterordnern c:\test\alpha und c:\test\beta Die Batch liegt im Ordner c:\test (sagen wir c:\test\batch.bat). Wenn ich nun in der DOS-SHELL auf c:\ bin und mit dem Aufruf c:\test\batch versuche die Batch auszuführen, dann gibt der copy-Befehl eine Fehlermeldung, dass er c:\alpha\ nicht finden kann. Man müßte also vorher erst in den Ordner c:\test\ wechseln, damit er alpha und beta findet. Ist aber eigentlich irrelevant. Da wohl kein normaler User die Batch aus einer DOS-Shell heraus aufrufen wird. Legt man einfach eine Verknüpfung von der Batch auf den Desktop (oder sonstwo hin) funktioniert es wie es soll. In einer Verknüpfung kann man das Arbeisverzeichnis ja mitgeben (Unter "Ausführen in") und fertig.
____________________________________
cya, artur |
|
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|