Batch file 从每个子文件夹批量复制1个随机文件并移动到一个文件夹

Batch file 从每个子文件夹批量复制1个随机文件并移动到一个文件夹,batch-file,cmd,Batch File,Cmd,我正在寻找一个批处理脚本,每个文件夹复制一个随机文件到指定的文件夹 我一直在使用这个,它寻找mp3,并将它们随机复制到指定的文件夹。我希望修改此脚本,使每个文件夹有一个文件,并且确保不能复制同一文件夹中的两个文件 @echo off&setlocal enabledelayedexpansion set "musicroot=D:\files" set "playfolder=F:\dump" set /a filecount=351 pushd "%musicroot%" for /

我正在寻找一个批处理脚本,每个文件夹复制一个随机文件到指定的文件夹

我一直在使用这个,它寻找mp3,并将它们随机复制到指定的文件夹。我希望修改此脚本,使每个文件夹有一个文件,并且确保不能复制同一文件夹中的两个文件

@echo off&setlocal enabledelayedexpansion
set "musicroot=D:\files"
set "playfolder=F:\dump"
set /a filecount=351

pushd "%musicroot%"
for /r %%i in (*.mp3) do set /a files+=1& set "$!files!=%%~i"
popd
pushd "%playfolder%"
:randomloop
set /a rd=%random%%%files+1
set "mp3=!$%rd%!"
if not defined mp3 goto :randomloop
set "$%rd%="
for %%i in ("%mp3%") do if exist "%%~nxi" echo "%%~nxi" already exist in %playfolder%.& goto:randomloop
copy "%mp3%"
set /a filecount-=1
if %filecount% gtr 0 goto:randomloop
popd
有什么想法可以修改它来做我想做的吗?对不起,我不擅长批处理

@echo off
setlocal EnableDelayedExpansion
cd \particular\folder
set n=0
for %%f in (*.*) do (
   set /A n+=1
   set "file[!n!]=%%f"
)
set /A "rand=(n*%random%)/32768+1"
copy "!file[%rand%]!" \different\folder
这是针对特定文件夹的(测试的)。循环多个文件夹

更新2。以下代码将从每个子文件夹复制1个随机文件并移动到一个文件夹。(做了循环部分)经过测试和工作

@echo off
setlocal EnableDelayedExpansion
cd \particular\folder
set t=0
for /d %%i in (*) do (
    cd "%%i"
    set /A t+=1
    set n[!t!]=0
    for %%f in (*.*) do (
       set /A n[!t!]+=1
       set "file[!n!]=%%f"
    )
    set /A "rand=(n[!t!]*%random%)/32768+1"
    copy "!file[%rand%]!" D:\complete\destination
    cd..
)
pause

第一个从指定的根文件夹复制1个文件,第二个我无法复制任何东西,但没有错误,想法?我无法测试第二个。也许你可以试着在
cd\special\folder
中循环找到一些东西,因为第一个很好用。“Special\folder”中可能没有任何文件夹,因此您无法复制任何内容。在\Special\folder中有3个文件夹,每个文件夹中都有100个随机唯一的文件,但没有得到任何内容,我会设法解决,非常感谢您的帮助!我发现系统找不到指定的路径。系统找不到指定的路径。系统找不到指定的路径。当我现在运行它时,我已经三次重命名文件夹,使其没有空格,因为我认为这可能是问题的原因,但仍然存在,是否存在语法问题?我也是。正在努力。试图修复它,