Zufallsverschiebung
Hallo,
ich habe hier im Forum von Biber schon ein Script gefunden, was das macht, was ich möchte.
Ich habe es jetzt angepasst und es funktioniert fast... Aber jetzt komme ich nichtmehr weiter - eventuell weiss jmd. von euch weiter?
Ich habe Ordner Pool und Ordner Play
Im Ordner Pool sind X .mpg Files vorhanden, die nacheinander in zufälliger Reihenfolge in den Ordner Play verschoben werden sollen, bis keine mehr in Pool sind.
Bei jedem Ausführen der .bat soll eine Datei verschoben werden.
Probleme:
- Die letzte Datei wird nie verschoben, habe deswegen diese Zeile eingefügt:
geht aber sicherlich auch noch eleganter, oder?
- Manchmal macht die .bat garnichts, obwohl noch Dateien da sind - wieso? Dies ist mittlerweile mein größtes Problem.
danke!
ich habe hier im Forum von Biber schon ein Script gefunden, was das macht, was ich möchte.
Ich habe es jetzt angepasst und es funktioniert fast... Aber jetzt komme ich nichtmehr weiter - eventuell weiss jmd. von euch weiter?
set "path=c:\batch\"
setlocal EnableDelayedExpansion
echo Setting Target and Source
Set "quell=%path%\Pool" & set "target=%path%\Play"
echo Calculating max. Files in Directory
Set /a "max=0, lfdnr=0"
for /f %%i in ('dir /b /a:-d %quell%') do set /a "max+=1"
echo Files in Directory: %max%
if %max%==0 goto empty
if %max%==1 move "%path%\Pool\*.mpg" "%path%\Play\" & goto end
echo Randomize
:Again
For %%i in (f_1) do set /a "%%i=!random!%%%max%"
echo Executing
for /f %%i in ('dir /b /a:-d %quell%') do (
set /a "lfdnr+=1"
@for %%a in (%f_1%) do (
if %%a==!lfdnr! move %quell%\%%~nxi %target%
))
goto end
:empty
echo Verzeichnis leer
pause
:end
Ich habe Ordner Pool und Ordner Play
Im Ordner Pool sind X .mpg Files vorhanden, die nacheinander in zufälliger Reihenfolge in den Ordner Play verschoben werden sollen, bis keine mehr in Pool sind.
Bei jedem Ausführen der .bat soll eine Datei verschoben werden.
Probleme:
- Die letzte Datei wird nie verschoben, habe deswegen diese Zeile eingefügt:
if %max%==1 move "%path%\Pool\*.mpg" "%path%\Play\" & goto end
- Manchmal macht die .bat garnichts, obwohl noch Dateien da sind - wieso? Dies ist mittlerweile mein größtes Problem.
danke!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 80975
Url: https://administrator.de/contentid/80975
Ausgedruckt am: 22.11.2024 um 18:11 Uhr
8 Kommentare
Neuester Kommentar
Moin MISTAX,
versuche es im ersten Anlauf mal so:
So lässt sich die Batch erstmal testen.
Dann schauen wir weiter.
Grüße
Biber
versuche es im ersten Anlauf mal so:
@echo off & setlocal EnableDelayedExpansion
REM hier: Kollisionen mit der "globalen" %path%-Variable vermeiden
REM Mindestens sollte das "set path=.." innerhalb der Setlocal-Anweisung
REM Besser noch, der hier benutzte Pfad heißt %mypath%" oder %pfad%
set "MYpath=c:\batch\"
echo Setting Target and Source
Set "quell=%MYpath%\Pool" & set "target=%MYpath%\Play"
echo Calculating max. Files in Directory
Set /a "max=0, lfdnr=0"
for /f %%i in ('dir /b /a:-d %quell%\*.mpg') do set /a "max+=1"
echo Files in Directory: %max%
if %max%==0 goto empty
REM if %max%==1 move "%path%\Pool\*.mpg" "%path%\Play\" & goto end
echo Randomize
:Again
REM For %%i in (f_1) do set /a "%%i=!random!%%%max%"
set /a "f_1=%random% %% max"
Echo [DEBUG] f_1 ist [%f_1%] und max ist [%max%]
echo Executing
for /f %%i in ('dir /b /a:-d %quell%\*.mpg') do (
set /a "lfdnr+=1"
if %f_1%==!lfdnr! (
Echo [DEBUG] verschiebe Datei No. [%f_1%] -- und zwar [%%~nxi]
ECHO move %quell%\%%~nxi %target%
))
goto end
:empty
echo Verzeichnis leer
pause
:end
So lässt sich die Batch erstmal testen.
Dann schauen wir weiter.
Grüße
Biber
Moin MISTAX,
sorry, sehe mit bloßem Auge keinen Fehler. Bzw. nur einen nicht entscheidenden.
---> Hier fehlt ein "%" nach der Variablen:
JETZT: Echo [DEBUG] verschiebe Datei No. [%f_1] -- und zwar [%%~nxi]
BESSER: Echo [DEBUG] verschiebe Datei No. [%f_1%] -- und zwar [%%~nxi]
Was gibt denn die Zeile aus
Grüße
Biber
sorry, sehe mit bloßem Auge keinen Fehler. Bzw. nur einen nicht entscheidenden.
---> Hier fehlt ein "%" nach der Variablen:
JETZT: Echo [DEBUG] verschiebe Datei No. [%f_1] -- und zwar [%%~nxi]
BESSER: Echo [DEBUG] verschiebe Datei No. [%f_1%] -- und zwar [%%~nxi]
Was gibt denn die Zeile aus
Echo [DEBUG] f_1 ist [%f_1%] und max ist [%max%]
Grüße
Biber