Begrenzte Anzahl von Dateien verschieben
Moin moin werte Leser,
als Kaufmann, der sich eher selten in der Bash umtut, fehlt mir leider der Durchblick, das nachfolgende Problem in den Grifff zu bekommen.
Wenn jemand eine entsprechende Idee zur Lösung hat, würde ich mich über eine Rückmeldung sehr freuen und danke schon jetzt...
Szenario:
Es existiert ein Verzeichnis mit einer hohen, jedoch unbestimmten Anzahl von Dateien (alles xml), die blockweise (z.B. jeweils 5 Dateien)
in ein anderes Verzeichnis verschoben werden sollen, um dort von einem anderen Programm weiter verarbeitet werden zu können.
Cron-gesteuert wird dann nach der Weiterverarbeitung der nächste Block verschoben.
Das äussere Gerüst steht schon und ist ausgetestet - jetzt muss ich nur noch die 5 Dateien irgendwie verschoben bekommen.
Anfangs dachte ich, es könnte mit einer Schleife per "for i in ..." funktionieren. Allerdings hält die Variable dann jedoch *alle* Dateinamen.
Obwohl ich noch nie mit Arrays experimentiert habe, glaube ich, dass die Fragestellung hierüber erledigt werden könnte...
als Kaufmann, der sich eher selten in der Bash umtut, fehlt mir leider der Durchblick, das nachfolgende Problem in den Grifff zu bekommen.
Wenn jemand eine entsprechende Idee zur Lösung hat, würde ich mich über eine Rückmeldung sehr freuen und danke schon jetzt...
Szenario:
Es existiert ein Verzeichnis mit einer hohen, jedoch unbestimmten Anzahl von Dateien (alles xml), die blockweise (z.B. jeweils 5 Dateien)
in ein anderes Verzeichnis verschoben werden sollen, um dort von einem anderen Programm weiter verarbeitet werden zu können.
Cron-gesteuert wird dann nach der Weiterverarbeitung der nächste Block verschoben.
Das äussere Gerüst steht schon und ist ausgetestet - jetzt muss ich nur noch die 5 Dateien irgendwie verschoben bekommen.
Anfangs dachte ich, es könnte mit einer Schleife per "for i in ..." funktionieren. Allerdings hält die Variable dann jedoch *alle* Dateinamen.
Obwohl ich noch nie mit Arrays experimentiert habe, glaube ich, dass die Fragestellung hierüber erledigt werden könnte...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 148969
Url: https://administrator.de/contentid/148969
Ausgedruckt am: 23.11.2024 um 10:11 Uhr
2 Kommentare
Neuester Kommentar
moin rallelin und Willkommen im Forum
wenn die Dateizahl ins unbekannte geht würde ich mit einer Liste Arbeiten.
diese Liste wird erstellt, wenn noch keine Vorhanden ist
die Anzahl kann ausgewählt werden
wenn die Liste Leer bzw nicht mehr da ist - wird automatisch eine neue angelegt
Vorteil: das Verzeichnis wird nicht jedesmal neu durchgeackert
Nachteil: wenn neue Dateien ins Verzeichnis kommen werden diese erst abgearbeitet wenn die Liste durch ist (kann natürlich auch ein Vorteil sein je nach dem)
Gruß Phil
wenn die Dateizahl ins unbekannte geht würde ich mit einer Liste Arbeiten.
diese Liste wird erstellt, wenn noch keine Vorhanden ist
die Anzahl kann ausgewählt werden
wenn die Liste Leer bzw nicht mehr da ist - wird automatisch eine neue angelegt
Vorteil: das Verzeichnis wird nicht jedesmal neu durchgeackert
Nachteil: wenn neue Dateien ins Verzeichnis kommen werden diese erst abgearbeitet wenn die Liste durch ist (kann natürlich auch ein Vorteil sein je nach dem)
::----snipp----Dateien-Blockweise-verschieben
@echo Off
set Woher="D:\ein Verzeichnis"
set "Dorthin=D:\das andere Verzeichnis"
set "Dateityp=*.xml"
pushD %Woher%
del "%temp%\tmp" 2>nul
if exist "%temp%\tmp2" (move "%temp%\tmp2" "%temp%\tmp">nul ) else dir /b %Dateityp%>"%temp%\tmp"
::Der Parameter enspricht den Maximalen BlockVerschub ( call :move 10 )entspricht Maximal 10 Dateien
call :move 5
popD
goto :eof
:move
set "Nr=1"
:: zum scharfmachen das @ECHO entfernen
for /f "usebackq delims=" %%i in ("%temp%\tmp") do (@ECHO move "%%i" "%Dorthin%\"
setlocal enabledelayedexpansion
if !Nr! == %1 endlocal & set "Nr=1"&more +%1 "%temp%\tmp">"%temp%\tmp2"&goto :eof
endlocal & set /a Nr+=1
)
::----snapp----Dateien-Blockweise-verschieben
Gruß Phil