enno78
Goto Top

Batch-Datei die nach einem bestimmten Dateinamen sucht....

Hallo!

Ich suche ein Programm,was unter Doss 6.22 läuft, zum Aufrufen einer bestimmten Datei.

Das ganze sollte so funktionieren:

1.Man startet das Prgramm

2. Es erscheint eine Abfrage, wo man den Namen der aufzurufenden Datei mit Endung eingibt

3. Das Programm sucht die Datei und öffnet sie mit einem Editor (....bei mir sollte die Datei mittels Word geöffnet werden)

4. Eventuelle Abfrage ob weitere Dateien gesuchten werden sollen.


Danke, Gruss Enno

Content-ID: 148552

Url: https://administrator.de/contentid/148552

Ausgedruckt am: 22.11.2024 um 20:11 Uhr

kkboy94
kkboy94 07.08.2010 um 15:31:02 Uhr
Goto Top
Was meinst du mit "Doss 6.22"?

MfG Karsten
Enno78
Enno78 07.08.2010 um 15:36:30 Uhr
Goto Top
das Betriebssystem " Dos" in meinem Fall die Version 6.22

also das Programm sollte unter DOS laufen.
kkboy94
kkboy94 07.08.2010 um 15:38:23 Uhr
Goto Top
Hmm so alt bin ich nicht, aber das müssten doch ganz normale CMD-Befehle sein oder?
Wenn ja versuchs mal so (ungetestet):
@echo off & setlocal
::HIER MUSST DU DEINEN WORD PFAD EEINSETZEN( aber die " " lassen) 
set word="C:\Programme\Office\Word.exe"  

:Drive
echo.
set  /p "drive=Laufwerk angeben (z.B.: C:\ ): "  
if not defined drive goto :Drive
:Datei
set /p "datei=Dateinamen mit Endung angeben: "  
if not defined datei goto :Datei
for /f "delims=" %%a in ('dir "%drive%"|find /i "%datei%"') do start "word" "%word%"  "%%a"  
::Wobei ich mir nicht sicher bin ob die Parameterübergabe so klappt
pause
Enno78
Enno78 07.08.2010 um 16:04:36 Uhr
Goto Top
Und wie sieht so ein Programm damit aus?
kkboy94
kkboy94 07.08.2010 um 16:12:51 Uhr
Goto Top
siehe oben,
Ich bin aber halt nicht ganz sicher. Das ist auch noch alles ganz grob skizziert, sollte aber theoretisch den zweck erfüllen
rubberman
rubberman 07.08.2010 um 17:16:45 Uhr
Goto Top
Hallo Karsten.

DOS bedeutet in diesem Fall aber auch, dass es nur die command.com gibt (cmd.exe war noch nicht geboren).
Befehlserweiterungen, wie set /p oder for /f existieren nicht.
Ich verkneife es mir einen Lösungsvorschlag zu posten, da ich hier auch überfordert bin. Dinge, wie
"2. Es erscheint eine Abfrage, wo man den Namen der aufzurufenden Datei mit Endung eingibt"
sind soweit ich weiß nicht möglich.

Grüße
rubberman
kkboy94
kkboy94 07.08.2010 um 17:47:58 Uhr
Goto Top
Das ist aber doof -.-
Sorry Enno, dann kann ich dir auch leider nicht helfen.


MfG Karsten
bastla
bastla 07.08.2010 um 23:24:57 Uhr
Goto Top
Hallo Enno78!

Du könntest es mit den folgenden beiden Dateien versuchen:
@echo off
set Bearb=%TEMP%\BEARB.BAT
:Loop
qbasic /run DatSuch.bas
if not exist %Bearb% goto :Ende
call %Bearb%
echo\
echo\
goto :Loop
:Ende
cls
als zB "Bearbeit.bat" gespeichert und

TempBat$ = "BEARB.BAT"  
INPUT "Dateiname (x = Ende)"; Datei$  
i = 1: WHILE ENVIRON$(i) <> "": IF LEFT$(ENVIRON$(i), 5) = "TEMP=" THEN TEMP$ = MID$(ENVIRON$(i), 6)  
i = i + 1: WEND
TB$ = TEMP$ + "\" + TempBat$  
IF UCASE$(Datei$) = "X" THEN GOTO Abbruch  
Cmd$ = "DIR /S /B " + "C:\" + Datei$ + " >" + TB$  
SHELL Cmd$
OPEN TB$ FOR INPUT AS #1
Gef$ = ""  
DO WHILE NOT EOF(1)
    INPUT #1, Gef$
LOOP
CLOSE 1
OPEN TB$ FOR OUTPUT AS 1
IF Gef$ <> "" THEN  
    PRINT #1, "@edit " + Gef$  
ELSE
    PRINT #1, "@echo off"  
    PRINT #1, "echo " + CHR$(34) + Datei$ + CHR$(34) + " nicht gefunden!"  
    PRINT #1, "echo\"  
END IF
SYSTEM

Abbruch:
ON ERROR GOTO Beenden
KILL TB$
Beenden:
SYSTEM
als "DatSuch.bas" gespeichert - falls nicht im selben (und aktuellen Verzeichnis) wie die Batchdatei, dann muss in Zeile 4 des Batches der vollständige Pfad zur "DatSuch.bas" angegeben werden.

Zusätzlich muss noch das Verzeichnis %TEMP% existieren - den Pfad findest Du mit
set

Kurz zur Funktionsweise:
Der Batch ruft zunächst ein QBasic-Programm auf, welches die Eingabe und die Suche nach der entsprechenden Datei (auf Laufwerk C: - siehe Zeile 7) übernimmt - gefunden wird dabei immer nur die letzte der per "dir /s /b C:\Dateiname.Typ" ausgegebenen Dateien ...

Der Aufruf zur Bearbeitung dieser Datei (im Beispiel mit dem Editor "edit.com") wird über einen temporären Batch "%TEMP%\BEARB.BAT" vorgenommen - um anstelle des Editors ein anderes Programm zu verwenden, die Zeile 17 entsprechend anpassen, zB:
PRINT #1, "@C:\Word\word.exe " + Gef$

Danach übernimmt wieder der "Hauptbatch" und startet erneut das Basic-Programm.

Dies wird solange fortgesetzt, bis bei der Abfrage des Dateinamens "x" eingegeben wird.

Grüße
bastla
60730
60730 07.08.2010 um 23:42:42 Uhr
Goto Top
Moin
Zitat von @bastla:
qbasic /run DatSuch.bas
Grüße
bastla

[OT]
@bastla:
Ach du grüne Neune, hast du das jetzt aus deinen grauen Hirnzelle rausgequetscht, oder wirklich noch eine echte/virtuelle aktive Doskiste?
Ne Kiste mit (fast allen) Dosdisketten hab ich zwar noch, aber auf die Idee heute nochmal Qbasic anzuwerfen...
[/OT]
Du hast deinen Nicknamen echt verdient face-wink

Grüße
bastla
bastla 07.08.2010 um 23:51:51 Uhr
Goto Top
[OT]
@ti-mo
Wie, Du kommst ganz ohne DOS 6.22 aus? face-wink

Tatsächlich hat mich vor Kurzem die Vergangenheit eingeholt - ein von mir 1990 verbrochenes (Mini-)QBasic-Programm ist bei einem Kunden allen Ernstes noch immer in Verwendung, was sich beim Umstieg auf W7/64Bit als etwas problematisch erwiesen hat face-wink - im XP-Mode (bzw dessen VM) tut's jetzt aber wieder ...

Grüße
bastla
[/OT]