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-ID: 306556

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

Ausgedruckt am: 17.11.2024 um 17:11 Uhr

batchnewbie
batchnewbie 08.06.2016 um 21:00:36 Uhr
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
mrcljnff
mrcljnff 09.06.2016 um 09:08:19 Uhr
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!
batchnewbie
Lösung batchnewbie 09.06.2016 aktualisiert um 12:15:41 Uhr
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.
mrcljnff
mrcljnff 09.06.2016 um 13:11:04 Uhr
Goto Top
Super vielen Dank für deine Hilfe!
Das müsste funktionieren!