폴더에서 임의의 파일을 어떻게 선택합니까?

폴더에서 임의의 파일을 어떻게 선택합니까?

Windows 명령줄 배치 스크립트(PowerShell 없음)를 사용하여 폴더(및 선택적으로 하위 폴더)에서 *.mp4와 같은 특정 유형의 임의 파일을 선택하려고 합니다.

나중에 사용하려면 파일 전체 경로를 환경 변수에 저장해야 합니다.

어떻게 이를 달성할 수 있나요?

답변1

폴더에서 임의의 파일을 어떻게 선택합니까?

다음 배치 파일을 사용하십시오.

@echo off
setlocal
setlocal EnableDelayedExpansion
rem store the matching file names in list
dir /b *.txt /s 2> nul > files
rem count the match files
type files | find "" /v /c > tmp & set /p _count=<tmp 
rem get a random number between 0 and count-1
set /a _random=%random%*(%_count%)/32768
rem we can't skip 0 lines
if %_random% equ 0 (
  for /f "tokens=*" %%i in ('type files') do (
    set _randomfile=%%i
    echo !_randomfile!
    goto :eof
    )
) else (
  for /f "tokens=* skip=%_random%" %%i in ('type files') do (
    set _randomfile=%%i
    echo !_randomfile!
    goto :eof
    )
)

환경 변수에는 !_randomfile!임의 파일의 파일 이름이 포함됩니다.

노트:

  • /s하위 폴더의 파일을 일치시키지 않으려면 제거하십시오 .
  • 0=< %RANDOM%< 32767따라서 일치하는 파일 이상이면 작동하지 않습니다 32766.

추가 읽기

  • Windows CMD 명령줄의 AZ 인덱스- Windows cmd 라인과 관련된 모든 것에 대한 훌륭한 참고 자료입니다.
  • 찾다- 파일에서 텍스트 문자열을 검색하고 발견된 모든 줄을 표시합니다.
  • /f에 대해- 다른 명령의 결과에 대해 명령을 반복합니다.
  • 무작위의- Windows CMD 셸에는 %RANDOM%난수를 생성하는 데 사용할 수 있는 동적 변수가 포함되어 있습니다.

관련 정보