Як змусити цей скрипт прочитати всі підпапки


0

Я знайшов сценарій відкриття випадкових файлів . Я змінив одне, і тепер він відкриває випадковий файл із C: / Чи може хтось мені сказати, як його змінити, щоб відкрити випадковий файл із C: / та всіх папок?

@echo off & setlocal
:: start of main
rem Set your path here:
set "workDir=C:\"

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
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

Чи повинен кожен файл мати однакові шанси на вибір, чи це нормально, якщо більш імовірні файли у дереві каталогів?
Ben N

Так, кожен файл повинен мати однакові шанси на відкриття.
k073l

dir /s- /sВідображає файли у вказаному каталозі та всіх підкаталогах.
DavidPostill

Привіт! Оскільки ми не є сервісом написання сценаріїв, ми потребуємо, щоб ви надали більш детальну інформацію про те, де ви застрягли, поза кодом, який ви скопіювали звідкись. Тож куди ви точно застряєте, впроваджуючи зміни, про які ви просите? Що ви вже намагалися, і які були результати цих спроб? Без цієї інформації та з вашої сторони це запитання набере голос і може бути закритим як "занадто широкий".
Ƭᴇcʜιᴇ007

Відповіді:


1

Вам потрібен /sвимикач

Зміна

for /f "delims=" %%i in ('dir /b ^|find "."') do call :sub1

до

for /f "delims=" %%i in ('dir /b /s ^|find "."') do call :sub1

і змінити

for /f "delims=" %%i in ('dir /b ^|find "."') do set "fileName=%%i" &call :sub2

до

for /f "delims=" %%i in ('dir /b /s ^|find "."') do set "fileName=%%i" &call :sub2

Привіт k073I, це допомогло?
blaze_125

Не знаю. Я дав йому працювати 20 хвилин і нічого.
k073l

За чесність я спробував це деякий час тому
k073l
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.