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%
난수를 생성하는 데 사용할 수 있는 동적 변수가 포함되어 있습니다.