Andreas H.
2010-10-27 10:24:52 UTC
Hallo,
folgenden Code habe ich (DOS-Nichtsblicker) mir aus verschiedenen
Foren usw zusammengeklebt.
Mit dem Code sollen Dateinamen ausgelesen werden, die Zeichen vor dem
ersten Unterstrich "_" als Benennung eines neuen Ordners verwendet
werden und dann alle Dateien, die mit dieser Zeichenkette anfangen, in
den neuen (dann bestehenden) Ordner kopiert werden.
--------------------<SNIP>-----------------
@echo off & setlocal
set "Quelle=P:\temp\%username%\incoming\Test\Out\"
set "Ziel=P:\temp\%username%\incoming\Test\Out\"
for /f "delims=" %%i in ('dir /b /a-d "%Quelle%" 2^>nul') do
call :ProcessFile "%%i"
goto :eof
:ProcessFile
for /f "delims=_" %%a in (%1) do set "ID=%%a"
if not defined ID goto :eof
set "ZielOrdner=%Ziel%\%ID%"
if not exist "%ZielOrdner%" md "%ZielOrdner%" & ping -n 2 127.0.0.1
move /-Y "%Quelle%\%~1" "%ZielOrdner%\"
--------------------<SNIP>-----------------
Der Code funktioniert im Wesentlichen. Blöderweise vergisst der Code
aber eine Datei zu kopieren, nämlich diejenige, anhand der der Name
des zu erzeugenden Ordners ausliest. Beim zweiten Durchlauf, wenn
bereits ein entsprechent benannter Ordner existiert, werden alle
Dateien korrekt kopiert.
Woran könnte das liegen?
Ich hab bereits die ping -n...-Pause eingebaut, weil ich dachte, der
Ordner sei ggf noch nicht "fertig". Scheint aber nicht das Problem zu
sein...
Vielen Dank für Eure Hilfe schon jetzt!!!
Grüße aus Stuttgart,
Andreas
PS.: Peinlich, peinlich, aber wo kann ich lernen, was ich mit dem
vorstehenden Code überhaupt mache????
folgenden Code habe ich (DOS-Nichtsblicker) mir aus verschiedenen
Foren usw zusammengeklebt.
Mit dem Code sollen Dateinamen ausgelesen werden, die Zeichen vor dem
ersten Unterstrich "_" als Benennung eines neuen Ordners verwendet
werden und dann alle Dateien, die mit dieser Zeichenkette anfangen, in
den neuen (dann bestehenden) Ordner kopiert werden.
--------------------<SNIP>-----------------
@echo off & setlocal
set "Quelle=P:\temp\%username%\incoming\Test\Out\"
set "Ziel=P:\temp\%username%\incoming\Test\Out\"
for /f "delims=" %%i in ('dir /b /a-d "%Quelle%" 2^>nul') do
call :ProcessFile "%%i"
goto :eof
:ProcessFile
for /f "delims=_" %%a in (%1) do set "ID=%%a"
if not defined ID goto :eof
set "ZielOrdner=%Ziel%\%ID%"
if not exist "%ZielOrdner%" md "%ZielOrdner%" & ping -n 2 127.0.0.1
nul 2>&1 || (echo %ZielOrdner% konnte nicht erstellt werden) &
goto :eofmove /-Y "%Quelle%\%~1" "%ZielOrdner%\"
--------------------<SNIP>-----------------
Der Code funktioniert im Wesentlichen. Blöderweise vergisst der Code
aber eine Datei zu kopieren, nämlich diejenige, anhand der der Name
des zu erzeugenden Ordners ausliest. Beim zweiten Durchlauf, wenn
bereits ein entsprechent benannter Ordner existiert, werden alle
Dateien korrekt kopiert.
Woran könnte das liegen?
Ich hab bereits die ping -n...-Pause eingebaut, weil ich dachte, der
Ordner sei ggf noch nicht "fertig". Scheint aber nicht das Problem zu
sein...
Vielen Dank für Eure Hilfe schon jetzt!!!
Grüße aus Stuttgart,
Andreas
PS.: Peinlich, peinlich, aber wo kann ich lernen, was ich mit dem
vorstehenden Code überhaupt mache????