Ich möchte eine bat-Datei erhalten, die eine zufällige Datei (mit einer beliebigen Erweiterung) aus einem bestimmten Ordner öffnet, aber auch Dateien in allen Unterordnern in diesem Ordner öffnet. Es gibt eine andere Frage, die in etwa so lautet ( Wie öffne ich eine zufällige Datei in einem Ordner und stelle ein, dass nur Dateien mit den angegebenen Dateinamenerweiterungen geöffnet werden sollen? ) Und das folgende Skript bereitstellt:
@echo off & setlocal
:: start of main
rem Set your path here:
set "workDir=C:\DVDCOVERS"
rem Read the %random%, two times is'nt a mistake! Why? Ask Bill.
rem In fact at the first time %random% is nearly the same.
@set /a "rdm=%random%"
set /a "rdm=%random%"
rem Push to your path.
pushd "%workDir%"
rem Count all files in your path. (dir with /b shows only the filenames)
set /a "counter=0"
for /f "delims=" %%i in ('dir /b ^|find "."') do call :sub1
rem This function gives a value from 1 to upper bound of files
set /a "rdNum=(%rdm%*%counter%/32767)+1"
rem Start a random file
set /a "counter=0"
for /f "delims=" %%i in ('dir /b ^|find "."') do set "fileName=%%i" &call :sub2
rem Pop back from your path.
popd "%workDir%"
goto :eof
:: end of main
:: start of sub1
:sub1
rem For each found file set counter + 1.
set /a "counter+=1"
goto :eof
:: end of sub1
:: start of sub2
:sub2
rem 1st: count again,
rem 2nd: if counted number equals random number then start the file.
set /a "counter+=1"
if %counter%==%rdNum% (start "" "%fileName%")
goto :eof
:: end of sub2
:: -snap--- end of batch
Quelle: http://forums.majorgeeks.com/showthread.php?t=181574
Dieses Skript öffnet jedoch nur Dateien im Hauptordner und keine aus den Unterordnern. Ich bin sicher, das Update ist einfach, aber ich kann es nicht herausfinden. Hilfe wird sehr geschätzt, danke.
quelle
Während der Code in der Antwort von dbenham ist, was ich verwenden würde, nur für eine Alternative
Der Code funktioniert folgendermaßen:
dir
Befehl aus.Und ja, es ist CPU-intensiv, da ein
sort
Befehl und viercmd
Instanzen gestartet werden , damit es funktioniert .quelle