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-Key: 222185

Url: https://administrator.de/contentid/222185

Printed on: April 19, 2024 at 20:04 o'clock

Member: Wooolf
Wooolf Nov 16, 2013 updated at 15:59:02 (UTC)
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.
Member: colinardo
colinardo Nov 16, 2013 updated at 17:46:42 (UTC)
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
Member: bastla
bastla Nov 16, 2013 at 16:09:49 (UTC)
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
Member: hs42dmueller
hs42dmueller Nov 16, 2013 at 17:07:15 (UTC)
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
)
Member: hs42dmueller
hs42dmueller Nov 16, 2013 at 17:43:26 (UTC)
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"
)
Member: bastla
bastla Nov 16, 2013 at 17:53:13 (UTC)
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?
Member: hs42dmueller
hs42dmueller Nov 17, 2013 at 12:07:00 (UTC)
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