bm-magic
Goto Top

Mein PC "lacht mich aus"!

Hallo,
Ich war über 30 Jahre als Serviceelektroniker im Außendienst tätig.
Die Kunden hatten ihr eigenes Wartungspersonal, welches manchmal überfordert war.
Ich habe, in meiner Freizeit,kleine Tools gebaut, um manche Aufgaben, ohne Vorkenntnisse verwirklichen zu können.
Zwischen anderem auch dieses Tool.
Eigentlich eine (ständig über Jahre wachsende) Sammlung von unterschiedlichen Aufgaben auf einer Bootdiskette.
Um die Übersicht zu verbessern, habe ich eine MENU.BAT erstellt und später auch eine INI.BAT für die Anpassung an unterschiedliche Versionen.
Das ROOT Verzeichnis der Diskette sieht aus wie folgt:
- DOS - das OS
- DRIVERS - für CD, ZIP und USB Laufwerk
- GHOST - eine Version von NORTON Sicherungsprogramm für die Festplattensicherung
- TOOLS - die Sammlung...
- Autoexec.bat
- command.com
-drvspace.bin
- io.sys
- load.sys
- msdos.sys
Die BAT Dateien sind im TOOLS\DAT\

- Die nachfolgende Lösung, bei dem sich u.U. einige die "Haare raufen werden", (aber: "unten blinden ist der einäugiger König),
habe ich mit Hilfe dieses Administrator Forum verwirklicht:
siehe: Aktuelles Datum als Verzeichniss Name
und: Im Batch mit Unbekanntem Ordner arbeiten

und... sie tut ihre Aufgabe...auch wenn sie mich "auslacht".
pc_lacht

Siehe Bild.

Nun bin ich im Ruhestand, habe Zeit... und hoffe schon wieder auf euer Hilfe, um einige Fehler zu mindern, denn es gibt immer noch "Bedarf".

Für den ersten Anhaltspunkt zu erst die autoexec.bat:
@CLS
@SET SRCDRV=A:
@SET DISK=A:
@SET WORK=A:\TOOLS\DAT
@SET PROMPT=$p$g
@SET PATH=%DISK%\;%DISK%\DOS;%WORK%;%WORK%\BAT;%WORK%\BAS;
@PATH C:\;C:\DOS;C:\BAT;C:\DOS-UTLS;C:\DOS-UTLS\NU8;C:\DOS-UTLS\NC;%PATH%
@LH /L:1,12864 APPEND /E /X
@APPEND %DISK%\;%DISK%\DOS;%WORK%;%WORK%\BAT\*.TXT;
rem HauptMenu anzeigen
@CALL MENU

Leider weis ich nicht, wo das Problem steckt und es gibt "einige" Batch die im Frage Kommen, also beginne ich mit dem Menü.
ACHTUNG NACHTRAG: Menü wirkt erst später! Und weil so viele Änderungen nicht erlaubt sind werde ich die nötige Teile unten hinzufügen.
BITTE um Verständnis.
Es besteht aus einer *.txt und einer *.bat Datei.
Falls nötig, werde ich weitere Teile nachliefern.
Das menu.txt
REM W-Disk_01/21_07.06.2000/MOR-(c)..bm-magic..Menu Wahl
WINDOW 08,08,20,65 LEUCHTEND GELB AUF BLAU EXPLODE
ROWCOL 09,25 "***Wartung Disk PRA-PC***"  
ROWCOL 10,16 "------------------------------------------"  
ROWCOL 11,16 "<1> Konfiguration sichern         /CNF"  
ROWCOL 12,16 "<2> REPORT sichern & loeschen     /REPORT"  
ROWCOL 13,16 "<3> TRACE sichern & loeschen      /TRACE"  
ROWCOL 14,16 "<4> Defragmentieren               /Defrag"  
ROWCOL 15,16 "<5> PRA-PC sichern                /BACKUP"  
ROWCOL 16,16 "<6> PRA-PC wiederherstellen       /RESTORE"  
ROWCOL 17,16 "<7> ZIP, CD, > USB Laufw. laden   /DRIVE-L"  
ROWCOL 18,16 "<8> Norten Utility                /NU"  
ROWCOL 19,16 "<9> Norten Commander              /NC"  
WINDOW 21,15,23,57 LEUCHTEND WEISS AUF MAGENTA
ROWCOL 22,17
ASK "Wahl:     1 2 3 4 5 6 7 8 9      Wahl=" 123456789 DEFAULT=E  
ROWCOL 24,0
SA /CLS
ROWCOL 1,0

und nun MENU.BAT
REM W-Disk_02/09_07.06.2000/MOR-(c)..bm-magic..Menu Wahl
@CALL %WORK%\INI
:BEGIN  HauptMenu anzeigen
@BE %WORK%\MASK0.TXT
@ECHO OFF
@FOR %%a IN (FE DE MO) DO SET %%a=
@BE %WORK%\Menu.txt
@IF ERRORLEVEL E GOTO ENDE
@IF ERRORLEVEL 9 GOTO NC
@IF ERRORLEVEL 8 GOTO NU
@IF ERRORLEVEL 7 GOTO DRIVE-L
@IF ERRORLEVEL 6 GOTO RESTORE
@IF ERRORLEVEL 5 GOTO BACKUP
@IF ERRORLEVEL 4 GOTO DEFRAG
@IF ERRORLEVEL 3 GOTO TRACE
@IF ERRORLEVEL 2 GOTO REPORT
@IF ERRORLEVEL 1 GOTO CNF
:CNF    1 Konfiguration im TagOrd\CNF gesichert
@CALL %WORK%\CNF
@GOTO BEGIN
:REPORT 2 Prod. Reporte werden gesichert
@CALL %WORK%\REPORT
@GOTO BEGIN
:TRACE  3 TRACE werden gesichert
@CALL %WORK%\TRACE
@GOTO BEGIN
:DEFRAG 4 Festplatte wird defragmentiert
@CALL %WORK%\DEFRAG
GOTO DATA
:BACKUP 5 Backup erstellen
@SET MO=DUMP
IF %FE%==ON GOTO BEGIN
@CALL %WORK%\NAME
@CALL %WORK%\GHOST
GOTO DATA
:DATA   4a und 5a DATA zurueck laden
@BE %WORK%\MASK0.TXT
XCOPY %HEU%\DATA %QHV%\DATA /y /s /e < %WORK%\V.TXT
IF %MO%==DUMP GOTO BACKUPF
@BE %WORK%\MASK0.TXT
@BE %WORK%\DEFRAGF.TXT
GOTO BEGIN
:BACKUPF 5b DATA von BACKUP Erfolg
IF %FE%==ON GOTO BEGIN
@BE %WORK%\MASK0.TXT
@BE %WORK%\BACKUPF.TXT
GOTO BEGIN
:RESTORE 6 Backup zurueckladen
@SET MO=LOAD
IF %FE%==ON GOTO BEGIN
@CALL %WORK%\NAME
@CALL %WORK%\GHOST
GOTO BEGIN
:DRIVE-L     7 Treiber laden
@CALL %WORK%\DRIVE-L
GOTO BEGIN
:NU      8 NU aufrufen
@CALL C:\DOS-UTLS\NU8\NORTON.EXE
@GOTO BEGIN
:NC      9 NC aufrufen
@IF NOT EXIST C:\DOS-UTLS\NC\NC.EXE CALL %DISK%\TOOLS\DC\DC
@CALL C:\DOS-UTLS\NC\NC.EXE
:ENDE   10 Ende der MENU.BAT
@BE %WORK%\MASK0.TXT
@ECHO.

Vorsorglich noch mask0.txt
REM W-Disk_02/21_07.06.2000/MOR-(c)..bm-magic..LOGO
SA /CLS
ROWCOL 03,01 " _  _" LEUCHTEND ROT  
ROWCOL 04,01 "(_)(_)" LEUCHTEND ROT  
ROWCOL 03,72 " _  _" LEUCHTEND ROT  
ROWCOL 04,72 "(_)(_)" LEUCHTEND ROT  
ROWCOL 00,08 " _                                                    _ " WEISS  
ROWCOL 01,08 "| |                                                  (_)"  
ROWCOL 02,08 "| |__    ____  __         ____  __     ____    ____   _    ___"  
ROWCOL 03,08 "|  _ \  |  _ \/_ \   __  |  _ \/_ \   / _  |  / _  | | |  / __)"  
ROWCOL 04,08 "| (_) ) | | \ | \ | (__) | | \ | \ | ( (_) | ( (_) | | | ( (__ "  
ROWCOL 05,08 "|____/  |_| |_| |_|      |_| |_| |_|  \____|  \__  | |_|  \___)"   
ROWCOL 06,08 "                                                _| |"  
ROWCOL 07,08 "                                               (___|"  
ROWCOL 08,01

Die "Lachzeichen" auf dem Bild entstehen, beim aufrufen von <NORTON COMMANDER>.

Was erzeugt diese Zeile?

Content-Key: 2362522566

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

Printed on: April 26, 2024 at 15:04 o'clock

Member: c-webber
c-webber Mar 31, 2022 updated at 19:57:57 (UTC)
Goto Top
Ich vermute mal es liegt an der @if NOT EXIST..., die ich um ehrlich zu sein nicht ganz verstehe.
Hast Du denn den NC mal in dem einen und mal in dem anderen Ordner liegen?

Nimm die Zeile

@if NOT EXIST C:\DOS-UTLS\NC\NC.EXE CALL %DISK%\TOOLS\DC\DC

mal komplett raus und teste dann.

Gruß, Chris

...btw scheint mir, dass %DISK% gar nicht deklariert wurde?
Member: bm-magic
Solution bm-magic Mar 31, 2022, updated at Apr 01, 2022 at 13:51:34 (UTC)
Goto Top
@c-webber, oder ist besser Chris?
Zu erst Danke.
- Es ist sicher nicht einfach, ein Fehler zu suchen, ohne allen nötigen Infos.
- Für den Fall, das man eine "falsche" Platte erwischt, auf der die nötigen Ordner nicht vorhanden sind,
ist im Ordner DC\ ein "Norten ähnlicher Dos Commander, der nur 50 k groß ist.
(In den DOS und Disketten Zeiten), eine unglaubliche Hilfe.

Ich werde Dein Vorschlag sofort testen.

Habe getestet...keine Änderung. ;-(

Bitte um Entschuldigung, habe gerade gesehen, das zu erst die INI.BAT aufgerufen wird.
Hier ist sie:
REM W-Disk_01/09_07.06.2000/MOR-(c)..bm-magic..Wariablen Setzen
@BE %WORK%\MASK0.TXT
@ECHO OFF
@FOR %%a IN (QHV ZLW ZDIR UVA UVB QDAT) DO SET %%a=
@REM -?- ZielLaufWerk fuer MKHEU setzen
@SET zlw=D:\
@REM -?- ZielUntenVerzeichnis fuer CNF setzen
@SET zdir=CNF
@REM -?- QuelleHauptVerzeichnis setzen
@SET QHV=P:
@REM 0 QuelleHauptVerzeichnis definieren
@IF EXIST c:\bat\version.bat call c:\bat\version
@IF EXIST %QHV%\nul subst %QHV% /d
@SUBST %QHV% c:\%VERSION%
@REM 0 Tagesverzeichnis erstellen
@Qbasic /RUN %WORK%\mkheu.bas
@REM  0 Tagesverzeichniss fuer CNF, Repport und Trace setzen
@CALL %ZLW%setheu.bat
@DEL %ZLW%setheu.bat
@REM 0 QuelleArbeitsVerzeichnis definieren
@Qbasic /RUN %WORK%\lsy.bas
@CALL %HEU%\setlsy.bat
@DEL %HEU%\lsy.txt
@DEL %HEU%\setlsy.bat
@REM 0 QuelleUntenVerzeichnise fuer CNF definieren
@SET UVA=\CNFG
@SET UVB=\PCNFG
@REM 0 DateiTyp fuer CNF definieren
@SET qdat=\*.txt

Es folgt MKHEU.BAS:
REM W-Disk_02/03_13.07.2013/MOR-(c)..bm-magic.."Heute" Erstellung  
DEFINT A-F
DEFSTR G-Z
DIM bef AS STRING
DIM dir AS STRING
zlw = ENVIRON$("ZLW")  
heu = RIGHT$(DATE$, 4) + LEFT$(DATE$, 2) + MID$(DATE$, 4, 2)
ziel = zlw + heu
sdir = zlw
such = heu
SHELL "DIR " + sdir + " /B /A:D > " + zlw + "dir.txt"  
OPEN zlw + "dir.txt" FOR INPUT AS #1  
found = 0
WHILE (NOT EOF(1) AND found = 0)
 LINE INPUT #1, a$
 fpos = INSTR((a$), (such))
 IF (fpos > 0) THEN found = 1
WEND
CLOSE #1
IF (found = 0) THEN rueck = "nicht": fpos = 0 ELSE rueck = a$  
'PRINT "Im Pfad "; sdir; " wurde "; such; " als "; rueck; " gefunden."  
IF sdir = zlw AND found = 0 THEN MKDIR zlw + heu:
KILL zlw + "dir.txt"  
OPEN zlw + "setheu.bat" FOR OUTPUT AS #1  
PRINT #1, "SET HEU="; ziel  
CLOSE #1
SYSTEM

Nette Grüße
Bohu
Mitglied: 117471
117471 Mar 31, 2022 at 22:06:15 (UTC)
Goto Top
Hallo,

dass der Norton-Müll Probleme mit der CodePage 850 hat, ist seit fast 40 Jahren bekannt.

…und wird auch im Wikipedia-Artikel beschrieben: de.m.wikipedia.org/wiki/Codepage_850

Gruß,
Jörg
Member: rubberman
rubberman Mar 31, 2022 updated at 23:20:45 (UTC)
Goto Top
Hallo Bohu,

das ist äußerst interessant:
@if ERRORLEVEL E GOTO ENDE
ERRORLEVEL ist ein ganzzahliger numerischer Wert.
Ich weiß nicht mal was das EB Tool aus deinem
DEFAULT=E
in der Textdatei macht, da das E gar nicht als Option angegeben wurde.

Ich würde in der Textdatei
ASK "Wahl: 1 2 3 4 5 6 7 8 9 Wahl=" 123456789E DEFAULT=E
und im Batch
@if ERRORLEVEL 10 GOTO ENDE
schreiben.

Ob das dein Problem löst, weiß ich nicht.
@117471 hat einen guten Einwand gebracht. Aber
a) müsste das dann bei jedem Start des NC so aussehen (nicht nur aus dem Batchscript) und
b) würde ich erwarten viele gleiche Zeichen in einer Reihe zu sehen, wenn es sich um falsch dargestellte Rahmenzeichen handeln würde.

Erste Frage an dich ist: Tritt der Fehler nur auf wenn der NC aus dem Batchscript gestartet wird, oder auch wenn du ihn händisch aus der Eingabeaufforderung ausführst?

Ich persönlich habe einen anderen Verdacht. Wir hatten im Mammut Thread darüber geschrieben, dass du Zeilenumbrüche im Script für DOS anpassen musst. Solltest du da in der Vergangenheit einen Fehler gemacht haben, kann es sein dass GOTO an die falsche Stelle im Script (möglicherweise irgendwo in die Mitte einer Zeile) springt. Das könnte ich aber nur sehen, wenn ich tatsächlich die Originaldatei mit einem HEX Editor ansehen würde.
ABER du könntest tatsächlich deinen geposteten Code hier aus dem Forum wieder kopieren und die Zeilenumbrüche wie besprochen automatisch korrigieren lassen.

Grüße
Steffen
Mitglied: 148523
148523 Apr 01, 2022 updated at 07:59:18 (UTC)
Goto Top
Wenn du die FAQs hier zum Thema Bilder einmal wirklich gelesen hättest, würden deine eingebundenen Bilder auch mit Klick auf das "+" an richtiger Stelle im Text erscheinen anstatt zusammenhangslos und völlig aus dem Kontext gegriffen am Ende deines an sonsten recht amüsanten und lesenwerten Threads. Schade wenn es manchmal an solchen Kleinigkeiten hapert... face-sad
Aber heute ist zum Glück ja Freitag, Hausaufgaben Tag und es gibt ja immer noch den "Bearbeiten" Knopf, dein bester Freund bei sowas ! face-wink
Dann auch gleich das Personal korrigieren sowie "unter" einer Oberfläche, diverse falsche Zeilenumbrüche und "tuten" tut eigentlich nur der Nachtwächter ! face-wink
Member: bm-magic
bm-magic Apr 01, 2022, updated at Apr 02, 2022 at 23:39:47 (UTC)
Goto Top
@leresesu, vielen Dank für Deine Bemerkungen...hauptsächlich, das eine Freund habe.
Ich sehe schon zwei, denn ohne Dich hätte ich auch den anderen nicht gefunden. face-wink
- Leider habe ich manchmal auch "ein Brett vorm Kopf".
Mit dem "Nachtwächter" kann ich NOCH nichts anfangen. face-sad

Sehr Nette Grüße
Bohu

@rubberman...hallo Steffen, Du hast den ersten "Treffer" gelandet. Ich habe es mit dem "E" getestet und
der Rechner "antwortet" mit Piepsen. Sonst keine andere Reaktion.
- Daraufhin habe ich das "E" durch "0" ersetzt. (Damit ich menu.txt nicht bearbeiten muss.)
Bei dem nächsten Menü Aufruf , und Druck auf die "9" (NC) erschien die "Lachzeile" und kurz darauf meine "0Maske". Kein <NC>.
- Ich musste auf Dich hören und den werd auf "10" setzen damit der <NC> startet. Auch die "Lachzeile" ist da.
- Wenn ich nun "10" eingebe:
kommt kurz die "Lachzeile" und da nach startet <CNF> mit einem Unterschied zum Ende.
Bei der Abfrage, ob man die Berichte löschen soll steht hier zusätzlich eine "0".
Wenn man "j" drückt (für Bestätigen) kommt "Syntaxfehler" und der Vorgang bricht ab.
- Habe zu erst wieder aus der "10" "E" gemacht.

- Wenn ich den >NC> beende und mit "NC" starte gibt es KEINE "Lachzeile".

Nun zur Kontrolle CNF.BAT:
REM W-Disk_03/09_07.06.2000/MOR-(c)..bm-magic..CNF Aufruf
@ECHO OFF
@REM  1 CNF nach Tagesverzeichniss\CNF kopieren
Qbasic /RUN %WORK%\cnf.bas
@REM 2 Ergebniss anzeigen
IF %DE%==ON GOTO ENDE
@BE %WORK%\MASK0.TXT
@BE %WORK%\CNFF.TXT
:ENDE

und CNF.BAS:
REM W-Disk_03/03_13.07.2013/MOR-(c)..bm-magic..CNF Erstellung
DEFINT A-F
DEFSTR G-Z
DIM bef AS STRING
DIM dir AS STRING
zlw = ENVIRON$("ZLW")  
qpfad = ENVIRON$("QHV") + ENVIRON$("LSYS")  
heu = ENVIRON$("HEU")  
zdir = ENVIRON$("ZDIR")  
zver = heu + "\" + zdir  
qdat = ENVIRON$("QDAT")  
qtext = heu + "\quelle.txt"  
ztext = heu + "\ziel.txt"  
a = 0
b = 0
fh = FREEFILE
sdir = heu
such = zdir
CLS
GOSUB find

fdir:
sdir = heu
such = zdir
IF sdir = heu AND fpos = 0 THEN GOSUB mdir:
RETURN find

mdir:
MKDIR heu + "\" + zdir  
RETURN find

find:
IF sdir = heu AND rueck = zdir THEN KILL zlw + "dir.txt"  
IF sdir = heu AND rueck = zdir THEN GOTO main
SHELL "DIR " + sdir + " /B /A:D > " + zlw + "dir.txt"  
OPEN zlw + "dir.txt" FOR INPUT AS #1  
found = 0
WHILE (NOT EOF(1) AND found = 0)
 LINE INPUT #1, a$
 fpos = INSTR((a$), (such))
 IF (fpos > 0) THEN found = 1
WEND
CLOSE #1
IF (found = 0) THEN rueck = "nicht": fpos = 0 ELSE rueck = a$  
'PRINT "Im Pfad "; sdir; " wurde "; such; " als "; rueck; " gefunden."  
IF sdir = zlw AND found = 0 THEN GOSUB fdir:  ELSE GOSUB fdir
RETURN

main:
qver = ENVIRON$("UVA")  
que = qpfad + qver + qdat
COLOR 10, 0
PRINT "   1. Quelle ist: "; que  
SHELL "DIR " + que + " /W /B /S >" + qtext  
qver = ENVIRON$("UVB")  
que = qpfad + qver + qdat
COLOR 10, 0
PRINT "   2. Quelle ist: "; que  
SHELL "DIR " + que + " /W /B /S >>" + qtext  
COLOR 15
PRINT "   Das Ziel ist: "; zver  
COLOR 0, 7
PRINT "                 ACHTUNG!                            "  
PRINT "     Gleichnamige Dateien werden ueberschrieben!     "  
PRINT "     Mit der richtigen Rheienfolge der Quellen,      "  
PRINT "     kann man die richtige Datei behalten!           "  
PRINT "                **********                           "  
SLEEP 4
COLOR 7, 0
CLS
OPEN qtext FOR INPUT AS #1 'QuellTextdatei oeffnen  
DO UNTIL EOF(1)
LINE INPUT #1, text
bef = "COPY " + text + " " + zver  
COLOR 14, 0
a = a + 1
PRINT "Nun wird "; a; "Datei kopiert: "; bef  
OPEN ztext FOR APPEND AS #2 'ZielTextdatei oeffnen 
PRINT #2, a; bef
CLOSE #2
SHELL bef
LOOP
CLOSE #1
SHELL "DIR " + zver + " /W /B /S > " + ztext  
OPEN ztext FOR INPUT AS #fh 'Zielberichtdatei oeffnen 
DO UNTIL EOF(fh)
LINE INPUT #fh, text
b = b + 1
LOOP
CLOSE #fh
IF a - b > 0 THEN
COLOR 12, 0
PRINT " Es wurden "; a - b; "Dateien ueberschrieben."  
SHELL "FC " + qtext + " " + ztext + " > " + heu + "\bericht.txt"  
PRINT " Vergleiche "; heu; "\bericht.txt"  
SHELL "TYPE " + heu + "\bericht.txt |more"  
SLEEP 3
GOTO kil
END IF
IF a = b THEN
PRINT "   Es wurden "; b; "Dateien erfolgreich kopiert."  
END IF
PRINT "   Sollen die Berichte geloescht werden <j> /\ <n> & <CR>";  
INPUT loes
SELECT CASE loes
 CASE "j"  
  COLOR 12, 0
  PRINT "   Wirklich <j> /\ <n> & <CR>";  
  COLOR 14, 0
  INPUT wir
  SELECT CASE wir
   CASE "j"  
    GOTO kil
    END
   CASE "n"  
    GOTO ber
    END
  END SELECT
 CASE "n"  
ber:
  PRINT "   Die Berichte wurden aufgehoben."  
  COLOR 7, 0
  GOTO ende
  END
END SELECT
kil:
KILL qtext
KILL ztext
COLOR 7, 0
ende:
SYSTEM

Einen schonen Tag.
Bohu

PS Bei mir schneit es, was SUPER ist. Ich hatte die letzten Tage "Heuschnupfen". Heute... WEG face-wink
Member: rubberman
rubberman Apr 01, 2022 at 14:09:52 (UTC)
Goto Top
Hallo Bohu

- Daraufhin habe ich das "E" durch "0" ersetzt. (Damit ich menu.txt nicht bearbeiten muss.)
Das konnte nicht funktionieren. Eine Reihe von IF RRORLEVEL ... Abfragen muss immer mit dem größten möglichen Wert starten. 0 ist der kleinste.

- Wenn ich nun "10" eingebe:
Nein, nein. Als Eingabe E und bei der Errorlevelabfrage im Batch 10, so wie ich dir die Zeilen oben vorgegeben habe.

kommt kurz die "Lachzeile" und da nach startet <CNF> mit einem Unterschied zum Ende.
Dass hier auch die "Lachzeile" kommt, bestätigt mich in meiner Annahme, dass noch irgendetwas bei der Zeichencodierung oder den Zeilenenden in deinen Dateien nicht stimmt.

Bei der Abfrage, ob man die Berichte löschen soll steht hier zusätzlich eine "0".
Das kommt daher, dass du 10 eingegeben hast. BE verarbeitet davon nur die 1 am Anfang, während die 0 auf den Monitor geschrieben wird.

Wenn man "j" drückt (für Bestätigen) kommt "Syntaxfehler" und der Vorgang bricht ab.
Das kommt sicher davon dass die 0 nicht verarbeitet werden kann.

- Habe zu erst wieder aus der "10" "E" gemacht.
Im IF ERRORLEVEL? Nein, das kann nur verkehrt sein.

- Wenn ich den >NC> beende und mit "NC" starte gibt es KEINE "Lachzeile.
Und darum glaube ich weiterhin, dass bei der Zeichencodierung oder den Zeilenenden in deinen Dateien etwas nicht stimmt.

PS Bei mir schneit es, was SUPER ist. Ich hatte die letzten Tage "Heuschnupfen". Heute... WEG face-wink
Des einen Freud, des anderen Leid.
Mich wird es erst im Juni wieder treffen, wenn Weizen und Gerste blühen. Da kann ich aber nicht auf Schnee hoffen face-smile

Grüße
Steffen
Member: bm-magic
bm-magic Apr 01, 2022 updated at 23:49:20 (UTC)
Goto Top
Hallo Steffen,

es tut mir leid, ich verstehe es nicht. Ich habe Deinen Rat befolgt und in der Batch "10" geschrieben.
Sehe aber kein Unterschied.
- Wenn ich "E" drücke, (wie in der menu.bat steht), meldet sich der PC mit Piepen. Das ist i:O. und das hatte immer gemacht.
- "10" kann ich NICHT eingeben, weil schon bei der Eingabe von "1" der Menüpunkt 1 startet. Ist noch verständlich.
- Warum habe ich dann, das "E" durch "10" ersetzt? Nur damit das EB Tool befriedigt wird?
(Ich habe keine Ahnung, was EB Tool ist und möchte es nicht ärgern, sehe aber kein Zugsamenhang.)

- Habe "experimentiert" und es fiel mir auf, das "Lachbild" immer(mit den gleichen Zeichen) bei dem
ersten Druck auf egal welche Menüwahl treffe.
Ab dem zweiten Druck erscheint zu erst eine andere Zeichenfolge.
Siehe Bild:
zweites

Also: (___|" Um es photographieren zu können, habe ich "Pause" eingefügt und nur das "Eine" beibehalten.
Es ist reproduzierbar.
Ist es eine Spur?

Sehr Nette Grüße
Member: rubberman
rubberman Apr 02, 2022 at 01:01:24 (UTC)
Goto Top
Hallo Bohu,

zuerst:
(Ich habe keine Ahnung, was EB Tool ist und möchte es nicht ärgern, sehe aber kein Zugsamenhang.)
Mea Culpa. Ich meinte das BE Tool (BE.EXE, BE.COM, was auch immer der genaue Name diese Programms für deine formatierte Aus- und Eingabe ist).

- Warum habe ich dann, das "E" durch "10" ersetzt? Nur damit das EB Tool befriedigt wird?
Nein. IF ERRORLEVEL E ist ein Syntaxfehler in Batch. Hier wird ein numerischer Wert erwartet, kein Buchstabe. Die 10 ist der Rückgabewert von BE, und ist die Position von E in der Reihe möglicher Eingaben 123456789E die du für das ASK Kommando in der Textdatei definiert hast.

Also: (___|" Um es photographieren zu können, habe ich "Pause" eingefügt und nur das "Eine" beibehalten.
Es ist reproduzierbar.
Ist es eine Spur?
Die Spur ist immer noch die, die ich dir geschrieben habe. Offensichtlich wird irgendwo in einen Speicherbereich hinein gelesen, in den nicht hineingelesen werden darf. Was genau das verursacht, kann ich nur mutmaßen. Ich denke immer noch du solltest Zeichencodierung und Zeilenenden in deinen Scripts prüfen, in dem du sie auf Diskette kopierst und bspw. unter Linux bearbeitest (schauen dass keine Umlaute oder ß drin sind, Zeilenenden ggf. mit unix2dos konvertieren, falls noch falsche dazwischen sind).

Grüße
Steffen
Member: bm-magic
bm-magic Apr 02, 2022 at 01:52:07 (UTC)
Goto Top
Hallo Steffen,

ich habe wieder etwas gelernt.
Habe aber noch einige Unklarheiten.
Es handelt sich um doch eine Diskette, oder anders herum...die einzelne Tools sind meine "Gesammelte Werke"
auf einer Diskette, von denen einige 20 Jahre alt sind, wir "reden" also über Win 95, NT bis ME. Damals hatte ich von Linux keine Ahnung . (Habe ich immer noch nicht. Ich benutze es nur.)
- Ich werde es jedenfalls Heute noch versuchen. Du hast weiter oben geschrieben, das man es mit einem
Hex Editor besser sehen kann. Kannst Du mir u.U. einen einfacher empfehlen?

Sehr Nette Grüße

Bohu
Member: rubberman
rubberman Apr 02, 2022 updated at 10:35:50 (UTC)
Goto Top
Hallo Bohu

Du hast weiter oben geschrieben, das man es mit einem Hex Editor besser sehen kann. Kannst Du mir u.U. einen einfacher empfehlen?
Ich nutze PSPad für Windows. Das vereint einen Texteditor und HEX Editor in einem Programm. Gibt es aber nicht für Linux. Und ich kann dir leider auch keine Empfehlung für Linux geben.
Davon abgesehen, ist es trotzdem noch relativ aufwendig.
Textdateien mit 2 Zeilen ...
Hello
World
... einmal mit DOS (0D 0A) und einmal mit UNIX Zeilenumbruch (nur 0A):
hellodosunix
Wenn du Codierungsfehler in einem langen Script suchen willst, musst du schon mit Adleraugen an die Sache rangehen.

Grüße
Steffen
Member: bm-magic
bm-magic Apr 02, 2022 at 15:09:06 (UTC)
Goto Top
Hallo Steffen,

als ich im Bett, nach dem ich die Bitte geschrieben habe, nachgedacht habe,
bin ich zu dem gleichen Ergebnis gekommen.
Das Werkzeug macht "nur" das, was man mit ihm macht.
Der Besitz, hilft bei der Lösung sehr wenig, wenn es bei der Kenntnissen mangelt.
Aber, ich bin "ein Glückspilz" und wäre es zu minderst versuchen.
Vielen Dank für das Beispiel, das werde ich zu erst versuchen zu verstehen.

Viele Grüße
Bohu
Member: bm-magic
bm-magic Apr 02, 2022 updated at 23:34:07 (UTC)
Goto Top
Hallo Steffen,

habe den ganzen Tag mit Fehlersuche verbracht. face-sad
- Zu erst alle Dateien in dem Ordner DAT einzeln mit unix2dos umgewandelt. Kein Erfolg.
Info: habe alle *.bat einzeln getestet. In manchen kommen "Syntax Fehler" vor, aber auf dem Bildschirm sind keine unlesbare Zeichen sichtbar. Die kommen NUR zum Vorschein, wenn sie aus der Menu.bat aufgerufen werden.
- Aus dem Grund habe ich die Menu.bat unzählig mal direkt unten DOS mit dem NORTEN Editor geändert.
Z.B. - An Anfang jeder Zeile habe ich @ vorangestellt.
- Die Untermenü habe geändert. Aus:
:CNF    1 Konfiguration im TagOrdner gesichert
habe ich:
:CNF
@REM 1 Konfiguration im TagOrdner gesichert
gemacht.
- Habe keine Leerzeichen, wegen am Anfang, noch am Ende der Datei.
Es ändert sich nichts.

Übrigens, BE.EXE (Batch Enhancer) ist im Norton Utilities 8.0 erhalten. Steuert NUR das aussehen der *.txt
Dateien. Farben, Kontrast usw. Ich habe die Hilfe über alle Optionen gelesen.
Auch als ich alle abgeschaltet habe, hatte ich kein Erfolg.

Nun bin ich "mit meiner Latein" am Ende. Es ist "halt so".

Habe aber ein weiteres Problem. Mit Dem Untermenü CNF, (ich kann hier nicht richtig zählen) weiter oben.
Es läuft richtig ab. Nur kurz von dem Ende, nach dem zweiten "j" erscheint gelb also ( COLOR 14, 0) "Syntaxfehler".
Danach folgt die CNFF.TXT Anzeige.
cnff
Einen Schönen Sonntag

Bohu
Member: rubberman
rubberman Apr 03, 2022 at 10:25:13 (UTC)
Goto Top
Hallo Bohu,

tut mir leid dass du den Fehler nicht findest.
Z.B. - An Anfang jeder Zeile habe ich @ vorangestellt.
Das ist nach dem ersten @echo OFF nicht mehr nötig. Schadet aber auch nicht.

- Habe keine Leerzeichen, wegen am Anfang, noch am Ende der Datei.
Es ändert sich nichts.
Es ist auf jeden Fall sinnvoll wenn alle Dateien mit einem Zeilenumbruch nach der letzten Zeile enden.

Übrigens, BE.EXE (Batch Enhancer)
Aha. Jetzt hab ich einen Anhaltspunkt. Logischerweise hatte Google bei nur BE keine sinnvollen Ergebnisse gebracht. Jetzt weiß ich was es ist. Aber viele Informationen dazu habe ich trotzdem nicht gefunden. Jedenfalls nichts, was ich aus dem Kontext deiner Textdateien nicht ohnehin schon vermutet hatte.

Habe aber ein weiteres Problem. Mit Dem Untermenü CNF, (ich kann hier nicht richtig zählen) weiter oben.
So langsam glaube ich aber dass es an BE selbst liegt. Immer wenn du vorher BE aufgerufen hast, gibt's anschließend Probleme.
Hast du noch irgendwo eine Sicherung von der du BE neu installieren kannst?

Grüße
Steffen
Member: bm-magic
bm-magic Apr 03, 2022 updated at 16:30:01 (UTC)
Goto Top
Hallo Steffen,

Danke für die Hinweise. Habe, nach dem die Dateien umgewandelt wurden, alle in der DOS Maschine, mit dem eigenem Editor kontrolliert und die letzte, also die Leerzeile, gelöscht. face-smile
Werde nun rückgängig machen.

Ich kann mich nicht Erinnern ob ich eine Sicherung von NU8 habe. Werde aber im Keller meine Disketten Sammlung durchsuchen. Es verhalten sich aber alle, also unterschiedliche PCs', gleich. Natürlich habe ich die "Baustruktur" der
Batch Dateien, von den schon auf dem PC vorhandenen Tools "abgekupfert". Wenn ich einige teste, funktionieren sie ohne "Störzeichen".
Bei mir kommt es zu dem Phänomen, glaube ich, nur dann, wenn eine Batch eine andere Batch aufruft.
Weil die BE.EXE nur 19 k groß ist, habe ich sie als BE.TXT gespeichert.
Kann mann damit etwas anfangen:
 ACHTUNG!  Wurde gelöscht, weil man es, laut @rubberman nicht wiederherstellen kann. SCHADE :-( 
Falls nicht, werde ich es nächtesmal löschen.

Nette Grüße

Bohu
Member: rubberman
rubberman Apr 03, 2022 at 12:18:07 (UTC)
Goto Top
Hallo Bohu

Kann mann damit etwas anfangen:
Nein. Das macht aus Maschinencode nur Zeichensalat. Aber auch sonst müsste man einen binären Vergleich der Datei mit dem Original vornehmen um irgendwelche Abweichungen feststellen zu können.

Grüße
Steffen
Member: bm-magic
bm-magic Apr 03, 2022 updated at 13:25:27 (UTC)
Goto Top
Hallo Steffen,

habe ich nicht ganz verstanden. Ich dachte, wenn man es wieder als BE.EXE umbenennt, hat man wieder das Original und kann damit arbeiten. Natürlich beseitigt es kein möglicher Fehler aber macht kein neuer. Oder irre ich?
- Ich meinte, Du könntest es verwenden zum testen...?

Nette Grüße
Bohu

PS habe die BE.EXE (Diskette und Original) auf dem DOS PC mit >FC /B< verglichen...kein Unterschied.
Member: rubberman
rubberman Apr 03, 2022 updated at 14:09:14 (UTC)
Goto Top
Hallo Bohu

Ich dachte, wenn man es wieder als BE.EXE umbenennt, hat man wieder das Original und kann damit arbeiten.
In aller Regel nicht.
Dazwischen liegen:
  • Dein Texteditor, der nicht alle Zeichen korrekt darstellen kann, da es sich um Binärdaten handelt. Spätestens bei 0x00 Bytes ist Schluss.
  • Die Forensoftware, die sicher auch noch mal Änderungen vornimmt.
  • Mein Texteditor, der auch wieder Änderungen vornimmt.
Nur wenn du die Dateiendung ohne Änderung des Inhalts auf deinem Rechner hin und zurück änderst, gibt es keine Probleme.

PS habe die BE.EXE (Diskette und Original) auf dem DOS PC mit >FC /B< verglichen...kein Unterschied.
Hmm. Dann habe ich im Moment auch keine gute Idee mehr.

Grüße
Steffen
Member: bm-magic
bm-magic Apr 03, 2022 at 16:01:21 (UTC)
Goto Top
Hallo Steffen,

vielen Dank. Schade...ich habe es Gut gemeint. Leider lassen sich "nicht alle" meine Ideen verwirklichen, also werde ich es oben löschen.
Habe aber etwas anderes gefunden: https://archive.org/details/symantec-norton-utilities-8.0-for-windows-an ...
Dort "lachte mich" ein Button: Download an.
Als ich es downloaden wollte, sollte ich mich anmelden. Und da "hapert es". Mein Handicap... ich kann nicht Englisch und wer weiß, welcher Vertrag da hinten steckt. Könntest Du es bitte für mich "entziffern"?

Danke und Grüße
Bohu
Mitglied: 117471
117471 Apr 03, 2022 at 16:08:48 (UTC)
Goto Top
Hallo,

Zitat von @bm-magic:

also werde ich es oben löschen.

Was sich übrigens auch aus urheberrechtlicher Sicht anbietet.

Die Ursache für deine Probleme habe ich Dir ja bereits vor 2 Tagen mitgeteilt. Die Norton-Software ist (bzw. war) schlichtweg fehlerhaft und stolpert über die Codepageeinstellungen (bzw. bringt diese ins Schleudern).

Gruß,
Jörg
Member: rubberman
rubberman Apr 03, 2022 updated at 16:40:51 (UTC)
Goto Top
Hallo Bohu

Dort "lachte mich" ein Button: Download an.
Ich vermute du hast den Upload Button gesehen. Zum Download brauchst du keine Anmeldung.
Rechts neben der Beschreibung gibt es das Feld "DOWNLOAD OPTIONS" und dort den "ISO IMAGE" Dropdown. Wenn du dort drauf klickst siehst du die ISO Downloadlinks für Diskette 1 bis 4.

Grüße
Steffen
Member: bm-magic
bm-magic Apr 03, 2022 at 16:38:33 (UTC)
Goto Top
Hallo Jörg,
ich danke und glaube Dir, aber "Die Hoffnung stirb zu Letzt." Die übrigen Batch, die auf dem PC von damaligen "Profis" erstellt wurden und die ich "nachahmen" versuchte...funktionieren. NUR meine nicht. face-sad

Sehr Nette Grüße
Bohu
Member: bm-magic
bm-magic Apr 03, 2022 updated at 16:48:19 (UTC)
Goto Top
Hallo Steffen

Du bist WIRKLICH UNBEZAHLBAR. DANKE. Werde es sofort versuchen.

Ein SCHÖNER TAG
Bohu

PS es ging sofort. Mein Fehler....ich habe den "UPLOAD" Button gedrückt...face-sad
Member: bm-magic
bm-magic Apr 03, 2022 at 19:40:57 (UTC)
Goto Top
@rubberman @117471,
Hallo Steffen und Jörg,
Ich bin nicht sicher, ob es der korrekter Forum Weg ist, so zu schreiben, habe aber (aus Verzweiflung) nach dem
Versuch einen Zitat von Jörg abzubilden, auf das Fragezeichen rechts auf der Seite gedrückt.
- Natürlich wurde dabei,mein "mühsam erstellter Beitrag wieder vernichtet", sonst musste ich, nach dem Druck auf
oben links "Bestehenden Text zitieren" NUR mühsam mein erst erstellter Beitrag löschen.
Also von Anfang an, falls ich mich noch erinnern kann:

Die BE.EXE befindet sich auf der vierten Diskette des heruntergeladenes Archiv von NU8.
- Es ist aber nicht die gleiche, die sich auf meinem DOS PC befindet. Es ist eine Englische Version. Auf meinem DOS PC ist eine Deutsche Version.
und nun das "verflixter" Zitat-versuch:
> Die Norton-Software ist (bzw. war) schlichtweg fehlerhaft und stolpert über die Codepageeinstellungen (bzw. > bringt diese ins Schleudern).
"Es funktioniert nicht" (in der Hilfe stand, das > Zeichen der Zitat einleitet)...und ich werde (nicht wieder) neu anfangen! Und schreibe weiter:
Ich hoffe, das die Annahme, das Norten-Software fehlerhaft ist, durch die NICHTBEACHTUNG der Sprachspezifischer Versionen entstanden ist!
Es löst zwar meine Probleme nicht, aber es lest meine Hoffnung auf eine mögliche Lösung steigen.

Viele Grüße
Bohu
Member: rubberman
rubberman Apr 03, 2022 at 20:42:24 (UTC)
Goto Top
Hallo Bohu

(in der Hilfe stand, das > Zeichen der Zitat einleitet)
Richtig. Und zwar ein > gefolgt von einem Leerzeichen am Zeilenanfang.
Aus
> Das ist ein Zitat.
wird
Das ist ein Zitat.
Funktioniert bei mir tadellos ¯\_(ツ)_/¯

Es löst zwar meine Probleme nicht, aber es lest meine Hoffnung auf eine mögliche Lösung steigen.
Ich hoffe es für dich.

Grüße
Steffen
Member: bm-magic
bm-magic Apr 03, 2022 updated at 21:27:04 (UTC)
Goto Top
Hallo Steffen,

Das ist ein Test.
Danke schon wieder. Hatte ich doch gemacht...oder? "Es gibt Sachen, die ein "sterblicher" nicht verstehen kann."
Also noch einmal:
Die Norton-Software ist (bzw. war) schlichtweg fehlerhaft und stolpert über die Codepageeinstellungen (bzw. bringt diese ins Schleudern).

Ob ich es mit dem "Zitat" verstanden habe, wird die Zukunft entscheiden. Wie verwendet man das Zitat Zeichen
links oben -> rechts von dem Foto?

Entschuldige Jörg, das ich es wiederhole, aber u.U. gibt es verschiedene NU8 Versionen, die sich in der "einheimischen" Sprache anders verhalten... ?

Und nun eine andere Frage/Bitte. Oben steht 25 Kommentare. Ich habe gerade die grüne Schriften rechts gezählt. Es könnte stimmen. In dem Kommentar 7 habe ich cnf.bat und cnf.bas eingetragen.
In dem Beitrag mein Problem: >Syntaxfehler< in der cnf.bas und ein 14 ein Bild hinzugefügt. Der Fehler vermute ich in dem Abschnitt ab Zeile 112 bis Ende. Steht dort etwas "verdächtiges"?

Danke sehr
Bohu
Member: rubberman
rubberman Apr 03, 2022 at 22:01:24 (UTC)
Goto Top
Hallo Bohu

Hmm. Verschachteltes SELECT CASE mit GOTO Sprung aus einem inneren CASE Zweig in einen äußeren CASE Zweig. Das könnte den BASIC Interpreter tatsächlich aus dem Konzept bringen.

Ziehe das ber: Label mal heraus.
Also, Zeilen 104 bis Ende des Scripts:
INPUT loes
SELECT CASE loes
 CASE "j"  
  COLOR 12, 0
  PRINT "   Wirklich <j> /\ <n> & <CR>";  
  COLOR 14, 0
  INPUT wir
  SELECT CASE wir
   CASE "j"  
    GOTO kil
    END
   CASE "n"  
    GOTO ber
    END
  END SELECT
 CASE "n"  
  GOTO ber
  END
END SELECT
ber:
PRINT "   Die Berichte wurden aufgehoben."  
COLOR 7, 0
GOTO ende
kil:
KILL qtext
KILL ztext
COLOR 7, 0
ende:
SYSTEM

Grüße
Steffen
Member: bm-magic
bm-magic Apr 04, 2022 at 17:23:49 (UTC)
Goto Top
Hallo Steffen,

danke für Deine Idee leider bleibt es bei dem Syntaxfehler.
Habe den Ganzen Tag damit verbracht...nichts.
Früher könnte ich mit mit Qbasic aus der Win Oberfläche testen,
das Programm ist auf meinem PC, lässt sich aber nicht mehr starten.
Es ist "natürlich" schon ein anderes PC mit "übernommenen" Festplatte.
Zu dem hatte ich ein anderes Windows. Die x64 wird nun "reklamiert".
Schade.
- Egal ob ich bei der Wahl "j" oder "n" eingebe, kommt die Fehlermeldung.
Info: Deine Änderungen habe ich direkt auf dem DOS PC mit QBasic 1.1 gemacht.

Ich dachte, das es einfacher wird.

Nette Grüße
Bohu
Member: rubberman
rubberman Apr 04, 2022 at 18:41:47 (UTC)
Goto Top
Hallo Bohu,

deklariere mal die Variablen loes und wir, bevor du sie nutzt.
Also, vor den von mir geposteten Codeabschnitt noch ...
DIM loes AS STRING
DIM wir AS STRING
... setzen.

Grüße
Steffen
Member: bm-magic
bm-magic Apr 04, 2022 updated at 21:07:21 (UTC)
Goto Top
Hallo Steffen,

habe gemacht. face-sad Gelb Syntaxfehler.
Habe auch das zweite
COLOR 7, 0
aus Zeile 27 entfernt. face-sad ?

Nette Grüße
Bohu

PS Ich habe nun SLEEP 6 Zeilenweise bis zum Ende geschoben.
Nun ist es:
SLEEP 6
SYSTEM

Der Syntax Fehler kommt erst nach der Pause.
Es hat etwas mit <SYSTEM> zu tun.

- Habe sie Qbasic Hilfe gelesen, es steht dort "nichts". Keine Bemerkung.
Lediglich: "schließt alle geöffneten Dateien und übergibt an OS."
Habe ich noch u.U. eine Datei die nicht geschlossen werden kann, oder
etwas falsch/nicht deklariert?
Mitglied: 117471
117471 Apr 04, 2022 updated at 21:17:50 (UTC)
Goto Top
Hallo,

Labels müssen bei den meisten Interpretern „übersprungen“ werden, was Du aber nicht tust. Wenn Du das nicht tust, hält er die Labels auch für Befehle.

Nach dem Color-Befehl in deinem Beispiel versucht er also, die Zeile „ende:“ als Befehl auszuführen und das führt zum Syntax Error.

Vermutlich reicht es schon, ein Weiteres "GOTO ende“ direkt vor das Label zu packen.

Gruß,
Jörg
Member: rubberman
rubberman Apr 04, 2022 at 21:30:22 (UTC)
Goto Top
Hallo Bohu

Habe ich noch u.U. eine Datei die nicht geschlossen werden kann, oder etwas falsch/nicht deklariert?

Wenn ich mir die Beschreibung zu OPEN ansehe
...
OPEN file$ [FOR mode] [ACCESS access] [lock] AS [#]filenumber% [LEN=reclen%]
...
filenumber% A number in the range 1 through 255 that identifies the file while it is open.
...
und dann die Zeilen 85 - 90 in deinem Script
OPEN ztext FOR INPUT AS #fh 'Zielberichtdatei oeffnen 
DO UNTIL EOF(fh)
LINE INPUT #fh, text
b = b + 1
LOOP
CLOSE #fh
dachte ich erst, dass da ein Problem ist. Allerdings ist fh eine Variable die in Zeile 16 mit der FREEFILE Funktion initialisiert wurde und somit einen validen Wert zwischen 1 und 255 haben sollte. Andererseits ist Zeile 16 weit weg und ob der Wert in Zeile 85 noch gültig ist, weiß ich nicht. Du könntest also Zeile 16 mal direkt vor das Öffnen der Datei schieben.

Grüße
Steffen
Member: bm-magic
bm-magic Apr 05, 2022 at 15:19:22 (UTC)
Goto Top
Mache, während der Hausarbeit, "kleine Pause". face-smile
@117471, danke sehr Jörg. Es wäre zu schön, Leider. face-sad
@rubberman, habe nun:
fh = FREEFILE
aus Verzweiflung vor jedes OPEN angefügt, aber mein PC ist immer noch nicht zufrieden.
Stimmt etwas mit dem COLOR Anweisung nicht?
syntax
SLEEP ist noch vorhanden.
Nach dem rotem Text ist das "?" und "j" gelb.
In der nächsten Zeile blinkt gelber "_" die Zeit ab, da nach gelber "Syntaxfehler"
und dann für kurze Zeit ein weiser "_"...und zum Schluss die oben gezeigte "Erfolgsmaske".

Ein schönes Rest des Tages
Bohu

PS Auf dem Sketch habe ich damals mehrere Monate verbracht. Leider habe ich in der Zwischenzeit die damals (mühsam) erworbene Kenntnisse wieder meist vergessen. face-sad
Mitglied: 117471
117471 Apr 05, 2022 at 15:31:42 (UTC)
Goto Top
Hallo,

was heißt hier „das wäre zu schön“?

Das ist definitiv und reprudizierbar ein großer Fehler, den Du da eingebaut hast.

Übrigens ist diese GOTO-Schachtelei aus genau diesem Grund seit 25 Jahren ausgestorben. Und das aus genau dem guten Grund, den Du jetzt mühsam lernst.

Derartige Konstrukte werden übrigens nicht umsonst als „Spaghetticode“ bezeichnet face-wink

Gruß,
Jörg
Member: bm-magic
bm-magic Apr 05, 2022 at 16:04:25 (UTC)
Goto Top
@117471, Hallo Jörg,
als ich Dein Beitrag gelesen habe...hoffte ich auf "Die Lösung" und es wäre wunderbar, wenn es geholfen hätte.

Ich kann nicht entscheiden, wie groß mein Fehler ist. Darf ich aber "versuchen" es zu minimieren?
Der Code erfüllt, bis zum Schluss, sein Zweck. "NUR" mein PC "meckert ein bisschen". So lange er aber seine Arbeit tut, ist es sein gutes recht.

Es ist mir natürlich bekannt, das dieses Beitrag eher zur Archäologie als zum Gegenwart gehört.
Leider kann ich es nicht besser.

Gib es u.U. ein Beispiel, wie man es nach 25 Jahren lösen würde?

Sehr Nette Grüße

Bohu
Mitglied: 117471
117471 Apr 05, 2022 at 16:27:47 (UTC)
Goto Top
Hallo,

Zitat von @bm-magic:

Ich kann nicht entscheiden, wie groß mein Fehler ist.

Naja, sagen wir mal so: Du musst es Dir schon aneignen. Du hantierst hier mit Techniken, die seit Jahrzehnten obsolet sind und bei denen meines Erachtens nach nicht einmal gewährleistet ist, ob diese überhaupt noch in dieser Form von modernen Betriebssystemen unterstützt werden.

Das ist natürlich legitim. Allerdings ist der Lernanspruch dabei natürlich enorm. Zum Einen, weil sich hier kaum noch jemand an so etwas erinnert bzw. das nie kennengelernt hat - und zum Anderen natürlich auch, weil das alles noch aus einer Zeit stammt, als der größte Teil der Dokumentation in Buchform erhältlich war.

Ich meine - QBasic wird seit ziemlich genau 30 Jahren nicht mehr gepflegt.

Gib es u.U. ein Beispiel, wie man es nach 25 Jahren lösen würde?

Was genau möchtest Du lösen? Fast alle Themen, die Du über deine Batch startest, sind obsolet: Norton war schon damals irrelevant und Datenträger (USB-Sticks, SSDs usw.) können nicht mehr defragmentiert werden. Und sollte noch mal eine Festplatte irgendwo in einem Windows-System auftauchen, kümmert sich die Aufgabenplanung.

Und was die "Lachzeichen" betrifft: Einzige Möglichkeit ist, den Softwarehersteller zu kontaktieren und ihn bitten, die seit über 30 Jahren bekannten Fehler zu fixen. Norton gehört übrigens zu Symantec.

Und falls Dir langweilig ist: Ich habe mir einen Hund gekauft, arbeite einen Tag pro Woche im GaLa-Bau und habe parallel dazu einen großen eigenen Garten. Es muss nicht immer IT sein... face-wink

Gruß,
Jörg
Member: bm-magic
bm-magic Apr 05, 2022 updated at 17:51:59 (UTC)
Goto Top
Hallo Jörg,
Ich DANKE DIR und ich verstehe Dich (hoffe ich).
Was ich lösen möchte? Mehr Verständnis, auch noch nach 30 Jahren, zu bekommen und meine Fehler
zu lösen/minimieren.
Du hast völlig Recht und auch meine Frau vertritt Deine Meinung: "Lieber eine Stunde in der Natur als vorm PC."
Das entspricht aber nicht meinen Bedürfnissen.
Ich habe nun mehr Zeit, möchte aber geistig, so weit es möglich ist, "fit" zu bleiben, bin Elektroniker und
dies ist mein Hobby.


Zurück zum Thema:
Die Aufgabe war/ist:
aus unbekannten unten-Verzeichnissen, bestimmte Dateien zu sichern.
Ich glaube, das es immer noch einen Bedarf dafür gibt. Z.B. um einen Inhaltsverzeichnis zu erstellen oder bestimmte Dateiformate zu extrahieren/sichern.
Ich habe dafür ~130 Zeilen gebraucht.
Geht es einfacher und/oder Fehlerfreier?

Nette Grüße
Bohu
Mitglied: 117471
117471 Apr 05, 2022 at 18:32:47 (UTC)
Goto Top
Hallo,

Zitat von @bm-magic:

Was ich lösen möchte? Mehr Verständnis, auch noch nach 30 Jahren, zu bekommen

Naja - bis jetzt hast Du noch nicht einmal verstanden, dass es daran liegt, dass die von Dir verwendeten Technologien irgendwie "tot" sind. Somit fehlt die grundsätzliche Akzeptanz von Tatsachen face-smile

QBasic, Norton - das ist ungefähr so, als würdest Du versuchen, selber Eisenerz zu schmelzen um einen Motorblock für einen Königsegg-Sportwagen nachzubauen... face-smile

Ich glaube, das es immer noch einen Bedarf dafür gibt.

Wer soll das benutzen? Verzeichnisbäume kopiert man mit robocopy oder per "Drag & Drop".

Das muss einen natürlich nicht hindern, sich damit zu beschäftigen. Allerdings ist das Ganze dann etwas aufwändiger - von der Beschaffung alter Rechner / Betriebssysteme bis hin zur Beschaffung von Literatur nebst Einarbeitung.

Man könnte z.B. auf Flohmärkten nach alten Büchern Ausschau halten - IMO gab es da viel vom Markt & Technik Verlag und "Data Becker".

Gruß,
Jörg
Member: bm-magic
bm-magic Apr 05, 2022 at 21:05:49 (UTC)
Goto Top
@117471,
am liebsten hätte ich die letzten Beiträge gelöscht...den...sie tragen nicht zum Lösung bei... sondern leiten ab.
Habe gerade Infos über Robocopy gelesen und nichts davon gefunden, das man damit Daten aus UNBEKANNTEN VERZEICHNISSEN sichern könnte.
Ich brauche TATEN die zum Lösung beitragen und nicht leere Worte die von meinem Problem ablenken.

ICH DANKE DIR DAFÜR IM VORAUS. Grüße
Bohu
Mitglied: 117471
117471 Apr 05, 2022 at 21:32:20 (UTC)
Goto Top
Hallo,

Zitat von @bm-magic:

Ich brauche TATEN die zum Lösung beitragen

O.K. - die Tat wäre, dass Du dir historische Hardware, Software und Dokumentation beschaffst, die Grundlagen erlernst und im Anschluss unter Anwendung des erworbenen Fachwissens dein Problem löst.

Aktuell kennst Du nicht einmal die elementären Abläufe / Kontrollstrukturen.

So leid es mir auch tut - aber programmieren lernt man nun mal nur strukturiert und nicht durch Trial & Error und durch zusammenkopieren von „ergoogelten“ Inhalten.

„Konstruktiver" geht es momentan nicht.

Melde dich gerne wieder, sobald Du konkrete Fragen zu halbwegs aktueller Software hast.

Gruß,
Jörg
Member: rubberman
rubberman Apr 05, 2022 at 21:58:23 (UTC)
Goto Top
Hallo Bohu,

ich hab das Script minimal überarbeitet (nicht zu sehr da ich nicht testen kann).
Bei der Deklaration der Variablen ist mir aufgefallen dass Variable a ganz zu Beginn als Integer deklariert war, du sie aber auch als Stringvariable zum Lesen aus einer Datei genutzt hattest.

Grüße
Steffen

REM W-Disk_03/03_13.07.2013/MOR-(c)..bm-magic..CNF Erstellung
DIM zlw$, qpfad$, heu$, zdir$, zver$, qdat$, qtext$, ztext$, sdir$, such$, rueck$, qver$, que$, text$, loes$, ln$
DIM a%, b%, found%, fpos%, fh%

zlw$ = ENVIRON$("ZLW")  
qpfad$ = ENVIRON$("QHV") + ENVIRON$("LSYS")  
heu$ = ENVIRON$("HEU")  
zdir$ = ENVIRON$("ZDIR")  
zver$ = heu$ + "\" + zdir$  
qdat$ = ENVIRON$("QDAT")  
qtext$ = heu$ + "\quelle.txt"  
ztext$ = heu$ + "\ziel.txt"  
a% = 0
b% = 0
sdir$ = heu$
such$ = zdir$
CLS
GOSUB find

fdir:
sdir$ = heu$
such$ = zdir$
IF sdir$ = heu$ AND fpos% = 0 THEN GOSUB mdir:
RETURN find

mdir:
MKDIR heu$ + "\" + zdir$  
RETURN find

find:
IF sdir$ = heu$ AND rueck$ = zdir$ THEN KILL zlw$ + "dir.txt"  
IF sdir$ = heu$ AND rueck$ = zdir$ THEN GOTO main
SHELL "DIR " + sdir$ + " /B /A:D > " + zlw$ + "dir.txt"  
OPEN zlw$ + "dir.txt" FOR INPUT AS #1  
 found% = 0
 WHILE (NOT EOF(1) AND found% = 0)
  LINE INPUT #1, ln$
  fpos% = INSTR(ln$, such$)
  IF (fpos% > 0) THEN found% = 1
 WEND
CLOSE #1
IF (found% = 0) THEN rueck$ = "nicht": fpos% = 0 ELSE rueck$ = ln$  
'PRINT "Im Pfad "; sdir$; " wurde "; such$; " als "; rueck$; " gefunden."  
GOSUB fdir
RETURN

main:
qver$ = ENVIRON$("UVA")  
que$ = qpfad$ + qver$ + qdat$
COLOR 10, 0
PRINT "   1. Quelle ist: "; que$  
SHELL "DIR " + que$ + " /W /B /S >" + qtext$  
qver$ = ENVIRON$("UVB")  
que$ = qpfad$ + qver$ + qdat$
COLOR 10, 0
PRINT "   2. Quelle ist: "; que$  
SHELL "DIR " + que$ + " /W /B /S >>" + qtext$  
COLOR 15
PRINT "   Das Ziel ist: "; zver$  
COLOR 0, 7
PRINT "                 ACHTUNG!                            "  
PRINT "     Gleichnamige Dateien werden ueberschrieben!     "  
PRINT "     Mit der richtigen Rheienfolge der Quellen,      "  
PRINT "     kann man die richtige Datei behalten!           "  
PRINT "                **********                           "  
SLEEP 4
COLOR 7, 0
CLS
OPEN qtext$ FOR INPUT AS #1 'QuellTextdatei oeffnen  
 DO UNTIL EOF(1)
  LINE INPUT #1, text$
  bef = "COPY " + text$ + " " + zver$  
  COLOR 14, 0
  a% = a% + 1
  PRINT "Nun wird "; a%; "Datei kopiert: "; bef  
  OPEN ztext$ FOR APPEND AS #2 'ZielTextdatei oeffnen 
   PRINT #2, a%; bef
  CLOSE #2
  SHELL bef
 LOOP
CLOSE #1
SHELL "DIR " + zver$ + " /W /B /S > " + ztext$  
fh% = FREEFILE
OPEN ztext$ FOR INPUT AS #fh% 'Zielberichtdatei oeffnen 
 DO UNTIL EOF(fh%)
  LINE INPUT #fh%, text$
  b% = b% + 1
 LOOP
CLOSE #fh%
IF a% - b% > 0 THEN
 COLOR 12, 0
 PRINT " Es wurden "; a% - b%; "Dateien ueberschrieben."  
 SHELL "FC " + qtext$ + " " + ztext$ + " > " + heu$ + "\bericht.txt"  
 PRINT " Vergleiche "; heu$; "\bericht.txt"  
 SHELL "TYPE " + heu$ + "\bericht.txt |more"  
 SLEEP 3
 GOTO kil
END IF
IF a% = b% THEN
 PRINT "   Es wurden "; b%; "Dateien erfolgreich kopiert."  
END IF
PRINT "   Sollen die Berichte geloescht werden <j> /\ <n> & <CR>";  
INPUT loes$
IF loes$ = "j" THEN  
 COLOR 12, 0
 PRINT "   Wirklich <j> /\ <n> & <CR>";  
 INPUT loes$
 IF loes$ = "j" THEN  
  GOTO kil
 END IF
END IF
PRINT "   Die Berichte wurden aufgehoben."  
COLOR 7, 0
GOTO ende

kil:
KILL qtext$
KILL ztext$
COLOR 7, 0

ende:
SYSTEM
Member: bm-magic
bm-magic Apr 05, 2022, updated at Apr 06, 2022 at 15:12:42 (UTC)
Goto Top
@117471, DANKE. "Alles wird GUT."
@rubberman, Hallo Steffen,
ich bin GLÜCKLICH, dass ich etwas von Dir höre.
Bei mir meldet sich beim Aufruf Qbasic und reklamiert Anfang der Zeile 72 "bef".
Die Meldung: "Falscher Datentyp".
Die Hilfe sagt:
Z.B. könnte versucht worden sein, die SWAP-Anweisung auf eine Zeichenkettenvariable und eine numerische Variable anzuwenden, oder auf zwei numerische Variablen unterschiechen Datentyps. ERR-Code: 13 
Was es auch zu bedeuten, klingt für mich als Fremdsprache.
Mehr kann ich "leider" nicht beitragen.

DANKE und Nette Grüße
Bohu

PS
a. Ich habe am Ende der DIM Zeile "bef$" eingetragen. Ohne Erfolg.
Die Zeile scheint nicht zu lang sein, denn als ich zu erst "bef," eingeschrieben habe, gab es eine Meldung: "Erwartet: Variable".
b. Als ich dann DIM bef AS STRING , in der folgende Zeile eingetragen habe...meldete sich Qbasic nicht mehr.
Es gibt eine Änderung, Wenn ich die Frage:
Sollen die Berichte geloescht werden <
mit "n" beantworte ist die "Syntaxfehler" Meldung gelb
falls ich "j" antworte, erscheint die rote "Sicherheitsabfrage" und die "Syntaxfehler" Meldung ist rot.
Member: rubberman
rubberman Apr 06, 2022 at 16:43:16 (UTC)
Goto Top
Hallo Bohu,

oh, die Variable hatte ich dann wohl übersehen.

a. Ich habe am Ende der DIM Zeile "bef$" eingetragen.
Hätte funktioniert. Natürlich nur wenn du im Script alle bef durch bef$ ersetzt hättest.

b. Als ich dann DIM bef AS STRING
Ja das ist die "lange Form" wie sie dann auch in späteren Basic Dialekten üblich wurden. Der Suffix $ an den Variablen bedeutet auch so viel wie AS STRING (und Suffix % so viel wie AS INTEGER).

mit "n" beantworte ist die "Syntaxfehler" Meldung gelb
falls ich "j" antworte, erscheint die rote "Sicherheitsabfrage" und die "Syntaxfehler" Meldung ist rot.
Dann hat sich am Syntaxfehler selbst aber nichts geändert.
Ich weiß nicht woran es noch liegen kann.

Grüße
Steffen
Member: bm-magic
bm-magic Apr 07, 2022 at 04:47:38 (UTC)
Goto Top
Hallo Steffen,

DANKE SEHR für Deine GROßARTIGE HILFE. Es ist doch nur ein "Schönheitsfehler" face-smile
UND das schon seid dem Entstehung.
Nur zur Info:
Die Qbasic 1.1 ist auch sehr "eigenartig". Ich habe es mit Deinem Vorschlag "bef$" getestet. Das Ergebnis:
- Die Qbasic hatte nichts reklamiert, aber es wurde auch nichts kopiert. Der Vorgang lief "normal" ab,
die Dateien wurden richtig abgearbeitet und gezählt, aber in der "Zwischenzeile" erschient immer wieder,
"kopiert 0". Sonst wurde er kompletter Pfad angezeigt.

SEHR NETTE GRÜßE
Bohu