-2

Мне нужен командный файл:

Данная папка A содержит файлы .txt ; например,

C:\A\a.txt
C:\A\b.txt
C:\A\c.txt
C:\A\d.txt

и папка B (которая пуста), мне нужен пакетный скрипт для копирования одного случайно выбранного файла из папки A в папку B каждый раз, когда я его запускаю.

1 ответ1

1

Вдохновленный этим постом, ваш скрипт может выглядеть так

@echo off

setlocal enabledelayedexpansion

set source=c:\A
set target=c:\B

set count=0
set x=0

:: put all the files into a pseudo-array prefixed with "TXT_"
for /r "%source%" %%a in (*.txt) do (
    set TXT_!count!=%%~a
    set /a count+=1
)

:: Use the 'modulo' function to get a usable value from system variable %random%
set /a x="%random% %% count"

:: Pull the relevant item out of the "TXT_" 'array'
set chosen=!TXT_%x%!

echo:I chose :: %chosen%
copy /y "%chosen%" "%target%" 1>nul
endlocal

Это предполагает, что у вас есть умеренное количество файлов в вашей исходной папке. В противном случае количество переменных в вашей среде может стать слишком большим.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .