求大佬帮写个文件夹复制某个子文件到相同名文件夹的脚本

查看 97|回复 9
作者:meng234885   
目前需求 a文件夹有许多文件 想把其中的一个或两个文件 转移到b文件夹 并且b文件夹和a问价夹名字相同(可以在后面加1 例如水果1)[i]

文件夹, 大佬

Stive1233   

@echo off
setlocal enableextensions enabledelayedexpansion
set 根目录=F:\桌面\水果
set 需要复制的文件=复制1,复制2
cd /d %根目录%
rem 建立新文件夹
for /d %%a in (*) do (set new=%%~dpa&set new=!new:~0,-1!1)
md !new!>nul 2>nul
for /d %%a in (*) do (
        set newb=!new!\%%a
        md !newb!>nul 2>nul
        cd %根目录%\%%a
        set n=0
        for /r %%b in (*) do (        
                for %%c in (%需要复制的文件%) do (
                        if %%c==%%~nb (xcopy /E /I /Y /Q %%~fb "!newb!">nul&set /a n+=1)
                )
        )
        if !n! neq 0 (
                echo %根目录%\%%a
                echo 复制 !n! 个文件
                echo.
        )
)
pause
复制以上内容到txt文件中,另存为,修改保存编码为ANSI,保存文件名后缀改为bat
修改第三行根目录为你的文件夹,修改第四行需要复制的文件为你希望复制的文件,不带扩展名,以英文逗号分隔,有几个写几个,保存后双击运行。
其他无需调整哈
meng234885
OP
  

能达到这个需求的软件也行
DetectiveConan   

我看看能不能搞
Shiliu2713   

按照你的意思 应该是指,  按照原始目录结构 把最后一级的文件 拆分成2份
DetectiveConan   

意思是,将你图中 C:\水果\ 这个文件夹里 所有子文件夹里的 2222.jpg 和 3333.jpg 都 复制到 D:\水果\ 文件夹下(这个文件夹下有每个品种,每个品种只有 2222.jpg 和 3333.jpg)
是不是这个意思
meng234885
OP
  


Shiliu2713 发表于 2024-11-26 10:51
按照你的意思 应该是指,  按照原始目录结构 把最后一级的文件 拆分成2份

也不是拆成两份 因为a文件夹可能会有十个文件 但是 只想把两个文件移动到b文件夹
meng234885
OP
  


DetectiveConan 发表于 2024-11-26 10:53
意思是,将你图中 C:\水果\ 这个文件夹里 所有子文件夹里的 2222.jpg 和 3333.jpg 都 复制到 D:\水果\ 文件 ...

是的是的 最好能配置问件名称  就是D:\水果\ 品总 \ 2222.jpg 和 3333.jpg
sunyue2719   

思路:遍历【水果】文件夹及其子文件夹。
为【水果1】创建相应的子文件夹。
从每个子文件夹中挑选指定的文件(例如 -2222.jpg 和 -3333.jpg)。
将这些文件复制或移动到【水果1】的对应子文件夹中。
[Python] 纯文本查看 复制代码import os
import shutil
# 定义源文件夹和目标文件夹路径
source_folder = '水果'
target_folder = '水果1'
# 创建目标文件夹结构
if not os.path.exists(target_folder):
    os.makedirs(target_folder)
# 遍历源文件夹的子文件夹
for root, dirs, files in os.walk(source_folder):
    for dir_name in dirs:
        subfolder_path = os.path.join(root, dir_name)
        target_subfolder_path = os.path.join(target_folder, dir_name)
        # 创建目标子文件夹
        if not os.path.exists(target_subfolder_path):
            os.makedirs(target_subfolder_path)
        # 获取子文件夹内的文件
        file_list = sorted(os.listdir(subfolder_path))
        # 挑选需要移动的文件
        selected_files = [file for file in file_list if file in ['-2222.jpg', '-3333.jpg']]
        # 移动文件到目标文件夹
        for file_name in selected_files:
            source_file_path = os.path.join(subfolder_path, file_name)
            target_file_path = os.path.join(target_subfolder_path, file_name)
            # 移动文件
            shutil.move(source_file_path, target_file_path)
或者是bat脚本:
[Bash shell] 纯文本查看 复制代码@echo off
:: 定义源文件夹和目标文件夹路径
set SOURCE=水果
set TARGET=水果1
:: 创建目标文件夹
if not exist "%TARGET%" (
    mkdir "%TARGET%"
)
:: 遍历源文件夹的子文件夹
for /d %%i in ("%SOURCE%\*") do (
    :: 获取子文件夹名称
    set "SUBFOLDER=%%~nxi"
    :: 创建目标子文件夹
    if not exist "%TARGET%\%SUBFOLDER%" (
        mkdir "%TARGET%\%SUBFOLDER%"
    )
    :: 复制所需的文件到目标子文件夹
    for %%j in (-2222.jpg -3333.jpg) do (
        if exist "%%i\%%j" (
            copy "%%i\%%j" "%TARGET%\%SUBFOLDER%\"
        )
    )
)
@echo 完成!
pause
将上述代码复制到一个文本文件中。
保存为 move_files.bat。
确保文件夹【水果】和【水果1】在脚本所在目录下,或者修改 set SOURCE=水果 和 set TARGET=水果1 为具体路径。
双击运行该脚本。
meng234885
OP
  


sunyue2719 发表于 2024-11-26 11:03
思路:遍历【水果】文件夹及其子文件夹。
为【水果1】创建相应的子文件夹。
从每个子文件夹中挑选指定的 ...

运行bat是空文件 然后还乱码
您需要登录后才可以回帖 登录 | 立即注册

返回顶部