我正在使用此代码将父文件夹(E:\“新文件夹”)中每个子文件夹中的一个随机文件复制到新的目标文件夹(E:\ samples \“New folder”)[it效果很好]:
@echo off
setlocal EnableDelayedExpansion
cd E:\"New folder"
set t=0
for /d %%i in (*) do (
cd "%%i"
set /A t+=1
set n[!t!]=0
for %%f in (*.jpeg *.jpg *.gif *.bmp *.png) do (
set /A n[!t!]+=1
set "file[!n!]=%%f"
)
set /A "rand=(n[!t!]*%random%)/32768+1"
copy "!file[%rand%]!" E:\samples\"New folder"
cd..
)
pause
但是,我需要根据原始文件夹重命名复制的文件,如下所示:
如果名为DC20140912.jpg的文件来自名为“Italy2014”的子文件夹,我需要将其重命名为“Italy2014.jpg”,这是一个源自名为“Rome2015”的子文件夹的文件,将被重命名为“Rome2015” .jpg“等等。
每个子文件夹只复制一个文件,因此不存在文件夹冲突的风险。
请帮忙
答案 0 :(得分:0)
@echo off
setlocal EnableDelayedExpansion
Set "Base=C:\Test"
Set "Dest=Q:\Test\2017-04\24"
Cd /D "%Base%"
set t=0
for /d %%i in (*) do (
cd "%%i"
set /A "n=0"
for %%f in (*.jpeg *.jpg *.gif *.bmp *.png) do (
set /A "n+=1"
set "file[!n!]=%%f"
set "ext[!n!]=%%~xf"
)
If !n! gtr 0 (
set /A "rand=(!n!*!random!)/32768+1"
Call Set "file=%%file[!rand!]%%"
Call Set "ext=%%ext[!rand!]%%"
Echo rand=!rand! n=!n! copy "!file!" "%Dest%\%%~ni!ext!"
copy "!file!" "%Dest%\%%~ni!ext!" >Nul 2>&1
)
cd..
)
修改需要使用!随机!和通话集