mrcljnff
Goto Top

FOR Schleife für Batchdatei

Hallo Leute,

hab hier Folgenden Code:

@echo off &setlocal


for /f "delims=" %%a in ('dir /a-d /b /od *.txt') do set "newestFile=%%a"
move "%newestFile%" "D:\test2\%newestFile%"
popd


Das Programm Kopiert die neuste Datei eines Ordners in einen anderen Ordner.

Mein Problem ist, ich brauch diesen Code in einer FOR Schleife, damit ich bestimmen kann wie viel "neuste Dateien" er in den anderen Ordner Kopieren soll.

Da ich noch nicht lange damit arbeite, bin ich schon am verzweifeln :/

Vielleicht kann mir hier jemand kurz diese FOR Schleife basteln.

Wäre echt Super!


Ich bedanke mich schonmal im vorraus


Grüße


Marcel

Content-Key: 306556

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

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

Member: batchnewbie
batchnewbie Jun 08, 2016 at 19:00:36 (UTC)
Goto Top
Hi,
willst du die Dateien zählen ?? Dann vielleicht so, oder so ähnlich??
@echo off & setlocal
cls

set "VerzeichnisA=C:\test1"  
set "VerzeichnisB=C:\test2"  
set "Typ=txt"  
set /A Dateien=0
pushd %VerzeichnisA% ||goto :eof
for /f "delims=" %%a in ('dir /a-d /b /od "*.%Typ%"') do (  
    set "newestFile=%%a"  
    move "%%a" "%VerzeichnisB%\%newestFile%"  
    set /A Dateien=Dateien+1
)
echo Dateien: %Dateien%
popd
Member: mrcljnff
mrcljnff Jun 09, 2016 at 07:08:19 (UTC)
Goto Top
Hi Danke schonmal!

Ich möchte z.B. angeben dass ich nur die neusten 2 Dateien Kopieren will oder die neusten 3.
Also dass ich varrieren kann wie viel er Kopiert.


Vielen Dank für deine Hilfe!
Member: batchnewbie
Solution batchnewbie Jun 09, 2016 updated at 10:15:41 (UTC)
Goto Top
Hi,
nun du könntest das vielleicht so machen:
@echo off & setlocal
cls
set "VerzeichnisA=C:\test1"  
set "VerzeichnisB=C:\test2"  
set "Typ=txt"  
set /a dateien=0
pushd %VerzeichnisA% ||goto :eof
for /f %%i in ('dir /b /a-d "*.%Typ%"') do set /a dateien=dateien+1  
    echo Es sind insgesamt %dateien% %Typ% Dateien
)
set /p "skipdateien=Wie viele Dateien sollen kopiert werden: "  
set /a dateien=%dateien%-%skipdateien"  
for /f "skip=%dateien% delims=" %%a in ('dir /b /a-d /od "*.%Typ%"') do (  
    set "newestFile=%%a"  
    echo move "%%a" "%VerzeichnisB%\%newestFile%"  
)
endlocal
Die erste Schleife zählt alle Dateien des Typs.
Dann wird die Anzahl der Dateien mit der Anzahl die kopiert werden soll subtrahiert.
Die zweite Schleife überspringt per skip= alle die nicht kopiert werden sollen, die übrigen werden kopiert.
Member: mrcljnff
mrcljnff Jun 09, 2016 at 11:11:04 (UTC)
Goto Top
Super vielen Dank für deine Hilfe!
Das müsste funktionieren!