Hi,
Ich bin mal gespannt, ob mir da jemand helfen kann. So oft scheint die Problemstellung nicht zu kommen. Ich möchte gerne per Batch einen zufälligen Ordner öffnen. Bei meinen Recherchen habe ich einen Script gefunden, der eine zufällige Datei nach einem bestimmten Muster (in dem Fall .doc) öffnet. Die enthält aber "findstr" und mein PC meckert, dies sei kein gültiger Befehl.
Auf einer anderen Seite habe ich einen Script gefunden, der Dateien und Ordner zählt. Den habe ich entsprechend auf das Zählen von Ordnern angepasst und eine Zufallszahl zwischen 1 und der Anzahl Ordner kann ich auch erstellen.
@echo off
setlocal
set /A ordner=0
set path="./meinordner"
for /F %%i in ('dir %path% /B /Ad') do set /A ordner=ordner+1
set /a zufall=%random% %% %ordner% +1
echo %ordner% Ordner, Random: %zufall%
In dem anderen Script (welches bei mir nicht funktioniert) wird nun die Zeile mit der for-Schleife noch mal ausgeführt. Gerade die funktioniert dort aber mit dem findstr, und zwar in beiden Zeilen. Ich poste die andere Variante hier auch mal:
:: get count of files
set targetfile=random.doc
set anzahldoc=0
for /F "tokens=1 delims=:" %%b in ('dir /b *.doc ^| findstr /v "%targetfile%" ^| findstr /n "." ') do set anzahldoc=%%b
anzahldoc = %anzahldoc% - 1
set /a i=%random% %% %anzahldoc% +1
echo %i%
set myfile=
for /F "tokens=2 delims=:" %%b in ('dir /b *.doc ^| findstr /v "%targetfile%" ^| findstr /n "." ^| findstr "^%i%:"') do set myfile=%%b
"%myfile%"
Kann ich das irgendwie auf den oberen, funktionierenden Code anwenden, so dass es wie gewünscht funktioniert?
Ich müsste im Prinzip ja in der for-Schleife entweder in der x-ten Zeile der ausgabe des dir-Befehls die Zeile in eine Variable schreiben oder jede Zeile in die Variable schreiben, aber die Schleife nach x Zeilen abbrechen. Wobei x jeweils meine Zufallszahl darstellt.
Nur da weiß ich nicht weiter, wie das gehen soll.
Mein Betriebssystem: Windows 10