Ergebnis 1 bis 9 von 9

Thema: Batch Probleme mit Leerzeichen in Parametern

  1. #1
    Junior
    Registriert
    Aug 2020
    Beiträge
    51
    Gefällt mir!
    20
    Du gefällst: 13

    Batch Probleme mit Leerzeichen in Parametern

    Ich verzweifel langsam ... vielleicht kann mir hier jemand auf die Sprünge helfen ...


    Ich habe eine Batchdatei die aus einem anderen Programm heraus aufgerufen wird und dabei Parameter übergibt ... genauer geasgt Ordnernamen und Pfade. In der Szene ist es sehr schön, da werden keine Leerzeichen verwendet, also somit wäre der Ordername (Release) kein Problem, die Übergabe innerhalb der Batchdatei geht problemlos. Das Verzeichnis allerdings entält Leerzeichen und wird bei mir immer nur bis zum Leerzeichen genommen (und somit funktioniert die Datei im gesamten natürlich nicht)

    Beispiel:

    PFAD LAUTET IM BEISPIEL C:\TEST ORDNER
    SET DIR_DL=%2

    ... ergibt als %2 dann C:\TEST

    Auch mit Google habe ich es nicht hinbekommen, viele Hinweise aber keiner den ich umsetzen kann bzw. keiner den ich zum laufen bekommen habe ... ist bestimmt nur irgendein Zeichen, aber wenn ich das nicht an die rihtige Stelle setze wird das nie was ...

    for /f %%r in (%1) do call audio.bat %%r %2



    Vielleicht ist ja jemand noch in Batch-Dateien?

  2. Werbung - Hier werben?
  3. #2
    Junior Avatar von BASF
    Registriert
    Jun 2015
    Alter
    39
    Beiträge
    111
    Gefällt mir!
    218
    Du gefällst: 99
    Einfach den Pfad in " setzen:

    "C:\TEST ORDNER"
    LG

  4. #3
    Junior
    THEMENSTARTER


    Registriert
    Aug 2020
    Beiträge
    51
    Gefällt mir!
    20
    Du gefällst: 13
    Der Pfad kommt ja über einen Parameter %2 rein ... und "%2" funktioniert nicht

  5. #4
    Junior Avatar von BASF
    Registriert
    Jun 2015
    Alter
    39
    Beiträge
    111
    Gefällt mir!
    218
    Du gefällst: 99
    Das war aber nicht deine Frage , du wolltest wissen warum dein pfad nicht erkannt wird, da hast ne Antwort drauf bekommen. Was dein script sonst noch machen soll ist ein ganz anderes Thema. Mir scheint aber so als ob du überhaupt kein Plan hast was da machst und einfach nur was zusammen kopiert hast.

  6. #5
    Junior
    THEMENSTARTER


    Registriert
    Aug 2020
    Beiträge
    51
    Gefällt mir!
    20
    Du gefällst: 13
    Grundlegende Ahnung davon habe ich schon (nur grundlegend, weil laaaange her) ... es ist nichts zusammenkopiertes und funktioniert auf andere Pfadangaben perfekt.

    Und die Problematik (und auch die Frage) zielt doch genau auf die Parameter und Leerzeichen.


    Falls es wen interessiert, was genau da mit dieser Datei passiert:
    Mit Dateimanager markiere ich ein Release (Parameter für den Pfad und den Ordner sollen hier übergeben werden) - dieser Release wird an eine vorher bestimmte Stelle entpackt, umbenannt und von überflüssigen Daten bereinigt. Mit einer weiteren Batchdatei wird ein vorher bearbeitetes Release (also der entpackte Ordner) noch umbenannt und verschoben.
    Diese Funktionen nutze ich bereits seit Jahren erfolgreich, lediglich mit Leerzeichen in den Verzeichnis-Namen gibt es Probleme. Natürlich könnte ich die Pfade so anpassen, dass es keine Leerstellen gibt, aber das wäre keine Lösung.

    Die Zeile die sicher das Problem ist in dem Code lautet:
    for /f %%r in (%1) do call audio.bat %%r %2

    und diese %2 müsste den Pfad enthalten, bzw. enthält den Pfad (aber erkennt das Leerzeichen als Trennung)

    Beispiel-Pfad:
    C:\Test Ordner

    Echo %2 ---> ergibt ---> C:\Test
    Echo %2 ---> sollte ergeben ---> "C:\Test Ordner"

    Ich hoffe ich habe es jetzt verständlicher ausgedrückt und freue mich über jede Hilfe.

  7. #6
    Senior
    Registriert
    May 2020
    Beiträge
    356
    Gefällt mir!
    81
    Du gefällst: 310
    Schau mal hier unter den Punkt "delims" (delimiter): https://ss64.com/nt/for_f.html

  8. Diesen Mitgliedern gefällt dieser Beitrag:


  9. #7
    Junior
    THEMENSTARTER


    Registriert
    Aug 2020
    Beiträge
    51
    Gefällt mir!
    20
    Du gefällst: 13
    Leider scheint das Problem doch ganz anderer Natur zu sein ...

    Habe mir zum testen ein Verzeichnis "DOWNLOADS" erstellt im Root von Laufwerk C. Darin dann ein Subdir "NEUE SACHEN" und darin dann ein Subdir "test.21.04.29.mein.test-releasegruppe" worin sich dann ein beliebiges Release befindet.
    Also zum Testen:
    C:\Downloads\Neue Sachen

    Echo %2 ergibt (richtig) "C:\Downlo~1\NeueSa~1"

    Sehr seltsam, denn ich habe noch NICHTS verändert.

    Nun habe ich das gesamte Verzeichnis einfach so auf eine andere Festplatte kopiert.

    Also zum Testen:
    D:\Downloads\Neue Sachen

    Echo %2 ergibt (falsch) "D:\Downloads\Neue"

    Diesen Test habe ich auf zig verschiedenen Laufwerken probiert - und es klappt auf 3 verschiedenen Laufwerken NICHT richtig. Auf allen anderen Laufwerken ALLES OK!
    Auf dem System bin ich Administrator, die Festplatten sind (zufälligerweise?) die Laufwerke die zuletzt neu hinzugefügt worden sind. Es sind alles unterschiedliche Laufwerke. Eine externe SSD, eine interne SSD, eine herkömmliche Festplatte.

    Hat jemand noch eine Idee an was das liegen könnte? Die Batch Datei ist es ja definitiv nicht. Wie kann auf ein und denselbem System auf verschiedenen Festplatten ein anderes Ergebnis kommen?

  10. #8
    Senior
    Registriert
    Jul 2016
    Beiträge
    335
    Gefällt mir!
    83
    Du gefällst: 397
    Das Dateisystem Fat kennt nur das 8.3 System für Datei/Ordnernamen, längere Namen werden in der von dir genannten Form gekürzt.
    Falls du einfaches Fat verwendest liegt das daran.
    Sowas ist Grundwissen für diejenigen die noch mit diesem Dateisystem arbeiten mussten. Und sollte es eigentlich auch für die heutige Generation sein.
    https://de.wikipedia.org/wiki/8.3


    In der Bash würde ich bei beim Verarbeiten der Variable einfach ein " vor und nach der Variable schreiben. Notfalls muss man die " auch maskieren. Bedeutet das maskierte Zeichen nicht wie normale Zeichen verarbeitet, sondern so weitergegeben werden.
    Vermutlich wird es in der Windows Commandline eine ähnliche Funktion geben.
    Geändert von banane (29.04.2021 um 20:28 Uhr)

  11. Diesen Mitgliedern gefällt dieser Beitrag:


  12. #9
    Junior
    THEMENSTARTER


    Registriert
    Aug 2020
    Beiträge
    51
    Gefällt mir!
    20
    Du gefällst: 13
    Das Grundwissen zu den 8+3 Namen und Joliet etc. kenne ich zur Genüge, gehöre hier sicher zum älteren Semester.

    Aber es kann nicht an der Batch Datei liegen wie ich zuerst vermutet habe (da waren die Tests immer auf einer Platte). Die Platten sind auch alle im NTFS Format.

    ABER dein Wiki Eintrag hat mich in die richtige Richtung geführt ... es ist schwer zu googeln, wenn man nicht die richtigen Namen eingeben kann. Und mit Short File Names und Long File Names habe ich dann die Lösung gefunden.

    In der Registry existiert ein Eintrag:

    Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlS et\Control\FileSystem\NtfsDisable8dot3NameCreation

    der ist bei mir auf den Wert 2 eingestellt gewesen (evtl. neuer Standard nach Updates?) was wohl soviel wie "volumenabhängig" bedeutet. Also es wird bei einem Volume gemacht und bei einem anderen nicht. Habe das nun auf den Wert 0 eingestellt und nach einem Systemneustart geht es zuerst immer noch nicht. Wenn dann aber die betreffenden Verzeichnisse neu erstellt werden geht es Muss nachher mal testen ob es auch mit Umbenennen geht, sonst habe ich eine Menge Namen neu zu erstellen ;-)

    DANKE - Thread kann geschlossen werden.

Ähnliche Themen

  1. Probleme myboerse.bz
    Von SatanischeHexe im Forum Szene Daily Talk & OffTopic
    Antworten: 8
    Letzter Beitrag: 30.05.2022, 14:32
  2. FTP Probleme
    Von Der Buchhalter im Forum Technik / Hardware & Software
    Antworten: 3
    Letzter Beitrag: 27.12.2018, 15:43
  3. (BATCH) - Hash per Batch ändern
    Von Gollum im Forum Entwicklung / Programmierung
    Antworten: 8
    Letzter Beitrag: 25.07.2018, 20:47
  4. (BATCH) - Batch zum verschieben von Ordner nach Genre
    Von Sairenji im Forum Entwicklung / Programmierung
    Antworten: 2
    Letzter Beitrag: 20.06.2017, 15:21
  5. Antworten: 0
    Letzter Beitrag: 26.02.2016, 12:20

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
SzeneBox.org... im Mittelpunkt der Szene!
© since 2015 szeneBOX.org - All Rights Reserved
Domains: www.szenebox.org