Rolf Hauptmeier: Problem bei Batchprogrammierung

Hallo,

ich weiß, das passt nicht so ganz zu HTML & Co., aber vielleicht kann mir doch jemand weiterhelfen?

Ich möchte batch-gesteuert Verschiedene Verzeichnisse in einem Rutsch löschen. Problem 1: ich weiß nicht, wie die Verzeichnisse heissen, weiß aber dass diese bedenkenlos gelöscht werden können.

Ok, ich bekomme die reinen Verzeichnisspfade (inklusive Datei) durch:
dir prefs.js /N /B /S

Problem 2: wie bekomme ich die Datei abgeschnitten, damit ich nur den Pfad habe?

Problem 3: wie bekomme ich die Pfadangaben DOS-gerecht?
ein "del c:\dokumente und einstellungen\blabla" ergibt nämlich "c:\dokumente nicht gefunden"

Hat da vielleicht jemand eine Idee (vorallem für Problem 3)?

Liebe Grüße,

Euer Rolf

  1. Holladiewaldfee,

    Problem 3: wie bekomme ich die Pfadangaben DOS-gerecht?
    ein "del c:\dokumente und einstellungen\blabla" ergibt nämlich "c:\dokumente nicht gefunden"

    del c:\dokume~1\blabla
    oder
    del "c:\dokumente und einstellungen\blabla"

    Ciao,

    Harry

    --
      (There are only 10 types of people in this world: Those who understand binary and those who don't)
    1. Hallo Harry,

      del c:\dokume~1\blabla

      Wenn ich von vorneherein immer wüsste, dass alle gesuchten Verzeichnisse in domume~1 liegen würden, wäre das ok. (wäre ich aber auch noch selber draufgekommen)

      oder
      del "c:\dokumente und einstellungen\blabla"

      eben das funktioniert nicht, da der Befehl del offenbar keine langen Verzeichnisnamen erkennt und somit c:\dokumente löschen will, aber den gibts (gottseigelobt) nicht und so bringt der 'n Fehler. (Hatte ich aber doch gesagt, oder?)

      Es wär ne Lösung, wenn ich dem dir-Befehl sagen könnte, dass er mir die kurzen Verzeichnisnamen zurückgeben soll, anstatt die langen.

      Liebe Grüße,

      Euer Rolf

      1. Hallo,

        del "c:\dokumente und einstellungen\blabla"

        eben das funktioniert nicht, da der Befehl del offenbar keine langen Verzeichnisnamen erkennt und somit c:\dokumente löschen will, aber den gibts (gottseigelobt) nicht und so bringt der 'n Fehler. (Hatte ich aber doch gesagt, oder?)

        Mit dem kleinen Unterschied, daß Harry auf der Shell den Dateinamen unter Anführungszeichen setzt, und DU den kanzen Befehl;-)

        Es wär ne Lösung, wenn ich dem dir-Befehl sagen könnte, dass er mir die kurzen Verzeichnisnamen zurückgeben soll, anstatt die langen.

        C:>dir /?
        Listet die Dateien und Unterverzeichnisse eines Verzeichnisses auf.

        DIR [Laufwerk:][Pfad][Dateiname] [/A[[:]Attribute]] [/B] [/C] [/D] [/L] [/N]
          [/O[[:]Folge]] [/P] [/Q] [/S] [/T[[:]Zeit]] [/W] [/X] [/4]

        [Laufwerk:][Pfad][Dateiname]
                     Bezeichnet Laufwerk, Verzeichnis und/oder Dateien.

        /A         Listet Dateien mit angegebenen Attributen auf.
          Attribute   D Verzeichnisse        R Schreibgeschützte Dateien
                      H Versteckte Dateien   A Zu archivierende Dateien
                      S Systemdateien        - vorangestellt kehrt die Bedeutung um
          /B         Einfaches Format (keine Kopfdaten, keine Zusammenfassung).
          /C         Zeigt das Tausendertrennzeichen bei Dateigrößen an (Standard-
                     einstellung). Verwenden Sie /-C, um das Tausendertrennzeichen
                     nicht anzuzeigen.
          /D         Gleich wie Breitformat, jedoch nach Spalten sortiert.
          /L         Verwendet Kleinschreibung.
          /N         Neues, langes Listenformat (Dateinamen auf der rechten Seite).
          /O         Gibt die Liste sortiert aus.
          Folge       N Name (alphabetisch)           S Größe (kleinere zuerst)
                      E Erweiterung (alphabetisch)    D Datum/Zeit (ältere zuerst)
                      G Verzeichnisse zuerst          - vorangestellt kehrt die
                                                        Reihenfolge um
          /P         Pausiert nach jeder vollen Bildschirmseite.
          /Q         Gibt den Besitzer der Datei aus.
          /S         Listet Dateien und alle Unterverzeichnisse auf.
          /T         Bestimmt welche Zeit verwendet wird (nur für NTFS).
          Zeit        C  Erstellung
                      A  Letzter Zugriff
                      W  Letzter Schreibzugriff
          /W         Verwendet Breitformat für die Auflistung.
          /X         Zeigt die Kurznamen für Dateien mit Nicht-8Punkt3-Namen an.
                     Das Format ist das gleiche wie bei /N, wobei der Kurzname vor
                     dem Langnamen eingefügt wird. Wenn kein Kurzname vorhanden ist,
                     werden Leerzeichen angezeigt.
          /4         Zeigt das Jahr vierstellig an.

        Optionen können in der Umgebungsvariablen DIRCMD voreingestellt werden.
        "-" vor einer Option setzt die Voreinstellung außer Kraft, z.B. DIR /-W.

        C:>

        Alles klar?

        Trotzdem hats Du das Problem, daß Du den Dateinamen nicht wegbekommst. In Unkenntnis deiner Windowsversion wird's aber schwierig, Dir genauere Tipps zu geben. Du könntest aber, wenn es in Deiner Macht liegt, eine Scriptssprache wie Perl einsetze, um diese Problem zu lösen. Mit reinen Windowsmitteln wird es sicherlich schwierig sein. Windows-Scripting-Host und VB-Script könnte es  zur Not auch tun, aber ob Du das installiert hast ist halt auch fraglich.

        Grüße
          Klaus

        1. Hallo Klaus,

          Mit dem kleinen Unterschied, daß Harry auf der Shell den Dateinamen unter Anführungszeichen setzt, und DU den kanzen Befehl;-)

          Stimmt, der kleine Unterschied war so klein, dass ich ihn nicht gesehen hab (Asche auf mein Haupt)

          C:>dir /?

          DIR /-W.

          Das funktionierte leider nicht.
          Beim normalen Dir mit /X hats die kurzen Namen angezeigt, mit nem zusätzlichen /B wieder nicht.
          Aber doch nicht so schlimm, mit den """ gehts ja *smile*

          Das Problem mit den Namen abschneiden, hab ich auch schon gelöst.
          Hab mir aus dem Internet eine awk.exe gezogen, mit der ich nun auch awk-Scripte schreiben kann, die unter Windows laufen.
          (muss nur höllisch aufpassen wegen dem /r oder /r/n etc.)

          Also, Leute, vielen Dank Euch allen, Ihr habt mir auf jeden Fall sehr geholfen.

          Viele liebe Grüße,

          Euer Rolf