hs42dmueller
Goto Top

Batch, for Schleife funktioniert nicht im batch

Hallo, die folgende Batch Datei macht bei demr for schleife nichts.
Starte ich die For schleife in einem cmd window, tut Sie Ihren Dienst und hängt amn jede Datei im Verzeichnis X das Datum vor dem Extention.
Bin für jede Idee die Batch Datei zu retten dankbar.
Vielen Dank im Voraus für die Hilfe.
LG Dieter

c:
cd \x
set MEINDATUM=%date:~-2%%date:~3,2%%date:~0,2%%time:~0,2%%time:~3,2%%time:~6,2%
for %i in (*.*) do (
ren "%~ni%~xi" "%~ni_%MEINDATUM%%~xi"
Pause
)

Content-ID: 222185

Url: https://administrator.de/forum/batch-for-schleife-funktioniert-nicht-im-batch-222185.html

Ausgedruckt am: 22.12.2024 um 23:12 Uhr

Wooolf
Wooolf 16.11.2013 aktualisiert um 16:59:02 Uhr
Goto Top
Der Inhalt des Batch Files stimmt aufjedenfall. Fehler könnte allerhöchstens beim Ausführen des Files passieren. Teste doch deine Eingaben im cmd Fenster durch bevor du es als Batchfile testest.
Auch könntest du zum Analysieren mehr "Pause Befehle" zwischen die Befehle setzen. Somit finden wir heraus das der Fehler bei der ersten Zeile des for Befehls zu sein scheint.
colinardo
colinardo 16.11.2013 aktualisiert um 18:46:42 Uhr
Goto Top
Hallo Dieter,
du musst die Prozentzeichen der Variablen der FOR-Schleife für die Verwendung in einer Batchdatei verdoppeln:
for %%i in (*.*) do @(
  ren "%%~i" "%%~ni_%MEINDATUM%%%~xi"  
)
Grüße Uwe
bastla
bastla 16.11.2013 um 17:09:49 Uhr
Goto Top
Hallo hs42dmueller und willkommen im Forum!

In einem Batch müssen die Laufvariablen mit doppelten Prozentzeichen geschrieben werden, daher (ungetestet):
set MEINDATUM=%date:~-2%%date:~3,2%%date:~0,2%%time:~0,2%%time:~3,2%%time:~6,2%
for %%i in (C:\x\*.*) do (
    ren "%%i" "%%~ni_%MEINDATUM%%%~xi"  
    Pause
)
Grüße
bastla
hs42dmueller
hs42dmueller 16.11.2013 um 18:07:15 Uhr
Goto Top
Auch die mit doppelten %% Zeichen versehe Datei tut es nicht.
Test in einer cmd windows lief mit einfachen % Zeichen positiv ab.
Hat noch jemand eine bessere Idee?
Betriebssystem Windows 7.
c:
cd \x
pause
set MEINDATUM=%date:~-2%%date:~3,2%%date:~0,2%%time:~0,2%%time:~3,2%%time:~6,2%
for %%i in (*.*) do (
ren "%%~ni%%~xi" "%%~ni_%MEINDATUM%%%~xi"
Pause
)
hs42dmueller
hs42dmueller 16.11.2013 um 18:43:26 Uhr
Goto Top
Nach dem Tip mit der Pause habe ich noch ein wenig versucht.
Das folgende Script tut es dann.
Vielen Dank für die Unterstützung. LG Dieter
c:
cd \x
set MEINDATUM=%date:~-2%%date:~3,2%%date:~0,2%%time:~0,2%%time:~3,2%%time:~6,2%
for %%i in (*.*) do (
echo off
ren "%%~ni%%~xi" "%%~ni_%MEINDATUM%%%~xi"
)
bastla
bastla 16.11.2013 um 18:53:13 Uhr
Goto Top
Hallo hs42dmueller!

Worin genau (außer im - an dieser Stelle - überflüssigen echo off) läge denn der Unterschied zwischen Deinen Versionen von 18:07 und 18:43?

Grüße
bastla

P.S.: Magst Du noch die passende Formatierung (als "Code") für Deine geposteten Schnipsel nachholen?
hs42dmueller
hs42dmueller 17.11.2013 um 13:07:00 Uhr
Goto Top
Ich kann es auch nicht erklären, aber mit dem Echo Off macht dass Programm eine winzige Pause und dann funktioniert der Code.
Ich hatte vorher dort einen Pause Befehl gesetzt. Das war aber zu umständlich, wenn ich 100 Dateien umbenennen will. Mit dem Echo Off macht der Code dort jetzt eine mini Pause und dann funktioniert der Rename Befehl. Vielen Dank an Alle Antworten und bis zum nächsten Mal. face-smile LG Dieter