Ich verzweifle seit Stunden an einer Umleitung und einem ECHO in einer Batch

  • Also ehrlich, ich checks nicht mehr.
    Ich habe eine größere Batch erstellt und habe jetzt den Fehler zusammengekürtz in eine kleine Batch, die sozusagen nicht macht was ich will.

    Code
    @ECHO OFF
    SET BAKDIR=C:\ASPCHK
    IF NOT EXIST %BAKDIR%\NUL MD %BAKDIR%
    
    IF NOT EXIST %BAKDIR%\README.TXT ECHO TEST>%BAKDIR%\README.TXT
    REM UMWEG Wäre
    REM IF NOT EXIST %BAKDIR%\README.TXT SET KEIN=BOCK
    IF "%KEIN%"=="BOCK" ECHO TEST>%BAKDIR%\README.TXT
    
    SET BAKDIR=

    Ok, sieht ja eigentlich ganz einfach aus.
    Die Batch soll in C:\ASPCHK eine Datei README.TXT mit dem Inhalt TEST erstellen.
    Macht die aber nicht, es wird immer eine Datei mit 0 Byte erstellt, das ECHO TEST geht dabei irgendwie unter.

    Ist das einfach nur ein Bug, oder kann eine IF NOT EXORZIST Abfrage einfach nicht mit Umleitungen umgehen?
    Muss ich da jetzt echt ein GOTO oder SET einbauen um meine Datei zu erstellen?

  • Ich glaube ich habe die Command.com immer unterschätzt die kann if then else?! Ich dachte das kam erst mit cmd...


    Achso kann dir leider nicht helfen...

    386SX- 20 Mhz "Erster eigener Rechner!2" NoName Komponenten

    486DX -30 "Industrie PC" auf Steckkarte

    Super Sockel 7 Gigabyte GA-5AA 3Dfx Voodoo 3500 TV

    AMD "Geode" ebenfalls Steckkarte für Backplane

    3x IBM Netvista 8364 "ThinRetroSystem" 1-2 von denen würde ich tauschen...


    "und noch so einiges mehr... "

  • Also ein IF THEN ELSE geht leider nicht unter DOS Stefan307


    Danke Ranger85 , auf welchem System?
    Werde das mal ausprobieren auf einem Test System.


    Aber ich hab noch folgendes herrausgefunden basierend auf MS-DOS 6.20.
    Da die Ursprünglich Befehlszeile recht lang war und plötzlich ein "readme.tx" erstellt wurde
    habe ich nochmal genauer rumprobiert.
    So wie es aussieht, darf ein IF Befehl inklusive aller Zeichen der Syntax, Variablen, Errorlevel

    und Befehl maximal 77 Zeichen enthalten, der Rest wird abgeschnitten.


    Außerdem habe ich folgendes zu DOS 5.0 bis 6.20 gefunden.
    Q74464: Pipe (|) After IF EXIST Fails

  • Dylldophlo Also, ich habe mal eben überlegt und folgendes ausprobiert, das funktioniert:


    Code
    IF NOT EXIST C:\BLA.TXT | echo test > bla.txt


    Es fehlt also in deinem Beispiel das pipe zeichen. ( | )

    Also das Resultat bei DOS 6.20 ist das gleiche, es wird eine Datei mit 0 Byte erstellt.
    Das in Q74464 Phänomen mit den beschädigungen der FÄT konnte ich nicht nachvollziehen,
    die Befehlszeile funktioniert aber unter 6.22 auch nicht. Bei Windows 7 funktionierts.
    Also nochmal in der Hilfe rumwurschteln...

    EDIT:
    Ok, nach etwas rumwurschteln konnte ich den Fehler mit der beschädigten FAT bei MS-DOS
    6.22 nachstellen, nicht aber bei DOS.6.20, da is aber die Konfiguration völlig anders.

    Bei DOS 6.20 gehts jetzt auch, auch nicht. 🤦‍‍♂️

    Jetzt weis ichs, das ist kein Bug, sondern ein Feature, zum Testen von Tschäkdisk und Skänndisk. 🍌

    Super, wenn ned mehr!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!