我正在使用此代码将父文件夹(e:" new文件夹"(中的每个子文件夹中的一个随机文件复制到新的目标文件夹(e: samples"新文件夹"([它运行效果很好]:
@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"的子文件的文件.jpg"等等。
从每个子文件夹中仅复制一个文件,因此没有文件名发生冲突的风险。
请帮助
- 由于扩展名不同,您将必须提取它们或单独存储它们。
- 此批次也存储了它们:
@echo off
setlocal EnableDelayedExpansion
Set "Base=C:Test"
Set "Dest=Q:Test2017-0424"
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..
)
编辑需要使用!随机!并致电集