如何随机选择一定数量的文件文件名相同,但扩展名为4/5并将其移动到另一个文件夹?

问题描述

我有一个目录,其中包含数百个具有描述性名称,不同名称但始终具有相同扩展名的文件(示例):

LetItBe(TheBeatles).mid
LetItBe(TheBeatles).jpg
LetItBe(TheBeatles).ran
LetItBe(TheBeatles).zip
LetItBe(TheBeatles)Scan.mid

扫描将始终位于文件名的末尾,并且始终是相同的单词)*

下一组:

heyJude(TheBeatles).mid
heyJude(TheBeatles).jpg
heyJude(TheBeatles).ran
heyJude(TheBeatles).zip
heyJude(TheBeatles)Scan.mid

我要批处理

随机选择多个文件(例如10个),然后 将具有相同文件名的所有关联文件(即两个MID,jpg,ran,zip)复制到另一个目录。

例如,如果其中一组文件缺少jpg文件或中间文件,我不希望该批处理停止,而只是将现有文件复制到新文件夹并移至下一个文件随机选择的组。

我发现了一个批处理代码,该代码可用于随机移动一个MIDI文件,但是我不确定如何插入指定所有文件名相同但扩展名不同的文件代码... >

@echo off
set folder=C:\Test1
set destfolder=C:\Test2

for /f "delims=" %%C in ('dir /b /a-d "%folder%\*.mid" ^| find /c /v ""') do set /A num=%random% %% %%C
for /f "delims=" %%F in ('dir /b /a-d "%folder%\*.mid" ^| more +%num%') do set name=%%F & goto next

:next

echo (By the way,I chose %name% )
move "%folder%\%name%" "%destfolder%\%name%"

Mofi用户请提供此帮助。

复制以相同字符串开头的所有文件的命令是copy “%FileName%”,带有环境变量的“ C:\ Destination Folder” FileName由代码随机选择文件之一来定义 组,例如,设置为“ FileName = heyJude(TheBeatles)”。更多 安全将使用两个copY命令行:复制“%FileName%。*” “ C:\ Destination文件夹”,然后复制“%FileName%Scan.mid”“ C:\ Destination 文件夹” 2>如果有文件集,则为空heyJude(TheBeatles) 和heyJude(TheBeatles)的实时文件heyJude(TheBeatles)应该 复制到目标文件夹。

但是我不知道如何将其插入现有代码中。我尝试将最后一行编辑为

move "%folder%\%name%*.*

但是随后根本没有文件被移动,系统找不到任何匹配的文件名。

帮助表示赞赏!

解决方法

要随机选择文件,可以使用%random%并重复10次。这将随机选择10个文件名,然后复制文件名`。*表示将复制具有给定名称和扩展名的任何文件。

@echo off & setlocal enabledelayedexpansion
set "folder=C:\Test1"
set "destfolder=C:\Test2"
set num=0
pushd "%folder%"
for %%a in (*.*) do (
   set /a num+=1
   set "name[!num!]=%%~na"
)
for /l %%i in (1,1,10) do (
   call :randm
 )
popd
goto :eof
:randm
set /a "rnd=(num*%random%)/32768+1"
copy "!name[%rnd%]!*" "%destfolder%"