'mehrwörtige' Variablen in Windows Batch

Von: , Frage gestellt am Di, 20. Okt 2009

Hallo,

Zunächst: Entschuldigung für "mehrwörtige" klingt doof, kürzer gehts aber nicht.

Dann zum eigentlichen "Problem":

Ich habe ein Windows Batch Skript in dem u.a. folgendes drin vorkommt:

for /f "tokens=2 delims=#" %%a in ('dir /b ch#*') do ren ch#%%a %%a


Kurze Erklärung, was hiermit erreicht werden soll bzw wird:

Wenn ein Dateiname die Vorsilbe ch# aufweist, dann wird diese entfernt und der dahinter stehende Rest wird zum Dateinamen.
Nun ist mein Problem, dass dieses nur funktioniert, wenn hinter dem ch# nur EIN Wort steht bzw. KEIN LEERZEICHEN vorkommt:

ch#test -> test
ch#testtest -> testtest
aber:
ch#test test -> ch#test test
ch# testtest -> ch# testtest

Hoffentlich verständlich?

Nun reicht es aber nicht aus, die Variablen in Anführungszeichen zu setzen ("ch#%%a" "%%a").
Was muss ich nun tun, dass ich beliebig viele Leerzeichen im Dateinamen verwenden kann und die Vorsilbe trotzdem entfernt wird.

Vielen Dank,
Martin

4 Antworten zu dieser Frage

  1. Antwort von nach 14 Minuten 0 hilfreich
    Re: 'mehrwörtige' Variablen in Windows Batch

    Hallo Martin. Ich habe ein Windows Batch Skript in dem u.a. folgendes drin
    vorkommt:

    for /f "tokens=2 delims=#" %%a in ('dir /b ch#*') do ren
    ch#%%a %%a
    

    Nun reicht es aber nicht aus, die Variablen in
    Anführungszeichen zu setzen ("ch#%%a" "%%a").
    Was muss ich nun tun, dass ich beliebig viele Leerzeichen im
    Dateinamen verwenden kann und die Vorsilbe trotzdem entfernt
    wird.
    Ich habe das jetzt auch mal ausprobiert. Unter Windows XP funktioniert das bei mir. Hast du ein anderes Betriebssystem?
    Vorher:
    D:\home\temp\test>dir
    Verzeichnis von D:\home\temp\test
    20.10.2009  13:56    <DIR>          .
    20.10.2009  13:56    <DIR>          ..
    20.10.2009  13:54                 8 ch#as df.txt
    20.10.2009  13:54                 8 ch#qw er.txt
    20.10.2009  13:56                73 test.bat
    3 Datei(en)             89 Bytes
    2 Verzeichnis(se), 30.126.551.040 Bytes frei
    

    Batchdatei:
    for /f "tokens=2 delims=#" %%a in ('dir /b ch#*') do ren "ch#%%a" "%%a"
    

    Nachher:
    D:\home\temp\test>dir
    Verzeichnis von D:\home\temp\test
    20.10.2009  13:56    <DIR>          .
    20.10.2009  13:56    <DIR>          ..
    20.10.2009  13:54                 8 as df.txt
    20.10.2009  13:54                 8 qw er.txt
    20.10.2009  13:56                73 test.bat
    3 Datei(en)             89 Bytes
    2 Verzeichnis(se), 30.126.551.040 Bytes frei
    


    Sebastian.

    • Antwort von nach 40 Minuten 0 hilfreich
      Re^2: 'mehrwörtige' Variablen in Windows Batch

      Hallo,

      Ich hab Windows Vista. Ich kann mir aber nicht vorstellen, dass zwischen XP und Vista ein Unterschied in der Windows Batch besteht...oder?

      Gruß,
      Martin

      • Antwort von nach einer Stunde 0 hilfreich
        Re^3: 'mehrwörtige' Variablen in Windows Batch

        Hallo. Ich hab Windows Vista. Ich kann mir aber nicht vorstellen,
        dass zwischen XP und Vista ein Unterschied in der Windows
        Batch besteht...oder?
        Kann ich mir eigentlich nicht vorstellen, aber wer weiß das schon so genau. Ich habe leider kein Vista zur Verfügung, um das auszuprobieren.
        Probier mal zum Test, das ren durch echo zu ersetzen und schau mal, ob die Dateien mit Leerzeichen dann mit ausgegeben werden. Vielleicht hilft das bei der Fehlersuche weiter.

        Sebastian.

        • Antwort von nach 2 Stunden 0 hilfreich
          Re^4: 'mehrwörtige' Variablen in Windows Batch

          Hallo,

          Sehr seltsam: Nachdem ich die Windows PowerShell deinstalliert habe funktioniert es plötzlich mit den Anführungszeichen...

          Vielen Dank,
          Martin

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!