批处理脚本:重命名复制文件以匹配原始文件夹



我正在使用此代码将父文件夹(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..
)

编辑需要使用!随机!并致电集

相关内容

最新更新