飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2409|回复: 19

[原创] 拖拽批处理一键创建文件夹并把文件移动到对应的新创建的文件夹中的软件

  [复制链接]
  • TA的每日心情
    开心
    2024-4-30 19:38
  • 签到天数: 71 天

    [LV.6]常住居民II

    发表于 2023-11-15 21:57:26 | 显示全部楼层 |阅读模式
    本帖最后由 china365love 于 2023-11-15 23:38 编辑

    原创一款关于拖拽批处理一键创建文件夹并把文件移动到对应的新创建的文件夹中的BAT脚本

    拖拽批处理一键创建文件夹并把文件移动到对应的新创建的文件夹中的软件是一款高效易用的工具,能够简化文件管理流程,提高工作效率。该软件通过简单的拖拽操作,即可快速创建文件夹并自动将文件移动到对应的文件夹中,无需手动操作,大大节省了时间和精力。
    [AppleScript] 纯文本查看 复制代码
    @echo off
    setlocal enabledelayedexpansion
    
    set "folderName=%~n1"
    set "sourceFile=%~f1"
    
    rem 创建一个新的文件夹
    if not exist "%folderName%\" (
        mkdir "%folderName%")
    
    rem 判断源文件是否存在,如果不存在则退出脚本
    if not exist "%sourceFile%" (
        echo 请关闭当前窗口,拖放主文件到bat文件上。
        exit /b
    )
    
    rem 获取文件名和扩展名
    for %%F in ("%sourceFile%") do (
        set "fileName=%%~nF"
        set "extension=%%~xF"
    )
    
    rem 如果源文件没有扩展名,则创建一个空文件夹并移动文件到该文件夹中
    if not defined extension (
        mkdir "%folderName%" 2>nul
        move "%sourceFile%" "%folderName%\"
    ) else (
        mkdir "%folderName%_temp" 2>nul
        move "%sourceFile%.*" "%folderName%_temp\"
        rmdir /s /q "%folderName%_temp"
    )
    
    pause
    
    1. 我把文件名的输入参数从`%~1`改为了`%folderName%`,这样更符合脚本的功能。2. 我添加了一个检查源文件是否存在并移动文件的逻辑,如果源文件不存在,脚本会输出提示信息并退出。3. 我把`mkdir`命令的输出重定向到了一个临时文件夹,这样可以避免在移动文件后立即删除原文件夹。这个临时文件夹会在移动完所有文件后被立即删除。4. 我把`pause`命令放在了最后,这样用户可以看到脚本的执行结果。5. 我移除了最后的`exit /b`命令,因为这个命令会强制结束脚本的运行,而且使用的是退出代码为0(通常表示正常退出),所以我不建议在脚本中使用它。
    第二种方法:
    琢磨了很久,终于写成了一个批处理脚本,发帖上来分享给大家,初次发这类帖子,高手勿笑,如违规请管理员删除!

    批处理功能:一键创建与“主文件名”名称相同的文件夹,并将当前文件夹中“主文件名”相同的文件移到新创建的文件夹中。

    @echo off  
    setlocal enabledelayedexpansion  
      
    set "filename=%~1"  
    set "foldername=%filename:~0,-4%"  
      
    mkdir "%foldername%" 2>nul  

    move "%foldername%".* "%foldername%\
    )   
      
    echo 文件夹已创建并文件已移动。

    使用方法:将上述代码保存为批处理文件(例如,create_folder.bat),然后将其放置在您希望使用的文件夹中。
    使用时,只需将文件直接拖到批处理文件上(如果有多个主文件名相同的文件需要移动,只拖动其中任意一个即可)。脚本将自动根据文件的主文件名创建一个同名文件夹(不包括扩展名),并将当前文件夹中主文件名相同(扩展名不同)的所有文件移动到新建的文件夹中,如果该文件夹已经存在,脚本将不会覆盖它。
    第三种方法:使用字符分割来获取文件名的话,后缀名长度<>3会出错,可以使用%%~nF和%%~xF来获取文件名和后缀,就简单多了。
    setlocal enabledelayedexpansion

    set "filename=%~1"
    for %%F in ("%filename%") do (
        set "foldername=%%~nF"
        set "extension=%%~xF"

    )
    第四种方法:

    @echo off
    setlocal enabledelayedexpansion

    set "filename=%~1"
    for %%F in ("%filename%") do (
        set "foldername=%%~nF"
        set "extension=%%~xF"
    )

    if "%extension%"=="" (
        mkdir "!foldername!" 2>nul
        move "!foldername%!extension!" "!foldername!"
    ) else (
        mkdir "!foldername!" 2>nul
        move "!foldername!.*" "!foldername!"
    )

    echo 文件夹已创建并文件已移动。

    第五种方法:文件名模糊查找文件移动.bat
    @echo off
    cd /d "%~dp0"
    set "Key=A"
    if not exist "%Key%\" (
        md "%Key%"
    )
    for /f "delims=" %%i in ('dir /b /a-d') do (
        if not "%%i" == "%~nx0" (
            set "FileName=%%i"
            setlocal enabledelayedexpansion
            if not "!FileName!" == "!FileName:%Key%=!" (
                echo "!FileName!" ---^> "%Key%\"
                move "!FileName!" "%Key%\" >nul
            )
            endlocal
        )
    )

    pause


    第六中稍微优化一下的代码:一键创建文件夹并移动文件.bat

    @echo off
    if "%~1" == "" (
        echo 请关闭当前窗口,拖放主文件到bat文件上。
        exit /b
    )
    set "FileName=%~n1"
    set "FolderName=%~n1"
    md "%FolderName%" 2>nul
    move "%FileName%.*" "%FolderName%\"
    该软件支持在Windows操作系统上运行,界面简洁易用,操作简单方便。用户只需将需要创建的文件夹和移动的文件拖放到软件界面上,即可一键完成创建和移动操作。此外,该软件还提供了丰富的自定义选项,用户可以根据自己的需求进行设置,以满足不同的文件管理需求。 动画.gif

    总之,这款拖拽批处理一键创建文件夹并把文件移动到对应的新创建的文件夹中的软件是一款高效、易用、灵活的文件管理工具,能够极大地提高用户的工作效率。

    感谢大家的支持2.0升级版.rar

    3.72 KB, 下载次数: 34, 下载积分: 飘云币 -2 枚

    升级了一下

    评分

    参与人数 5威望 +5 飘云币 +5 收起 理由
    飞天 + 1 + 1 感谢发布原创作品,PYG有你更精彩!
    zhczf + 1 + 1 PYG有你更精彩!
    LuckyClover + 1 + 1 PYG有你更精彩!
    atpyg + 1 + 1 PYG有你更精彩!
    皮蛋瘦肉 + 1 + 1 感谢发布原创作品,PYG有你更精彩!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-4-30 19:38
  • 签到天数: 71 天

    [LV.6]常住居民II

     楼主| 发表于 2023-11-15 23:27:18 | 显示全部楼层

    @echo off
    setlocal enabledelayedexpansion

    REM 设置源文件夹路径和目标文件夹路径
    set "source_folder=C:\Path\to\Source\Folder"
    set "target_folder=C:\Path\to\Target\Folder"

    REM 遍历源文件夹中的文件
    for %%F in ("%source_folder%*") do (
        REM 获取文件名和扩展名
        set "filename=%%~nxF"
        set "extension=%%~xF"
       
        REM 检查是否存在同名文件夹
        set "folderExists=false"
        for /d %%G in ("%target_folder%!filename!") do (
            if "%%~zG"=="%%~zF" (
                set "folderExists=true"
                REM 创建同名文件夹,如果它不存在的话
                if not exist "%%~dpG" mkdir "%%~dpG"
                REM 将文件移动到同名文件夹中
                move "%%F" "%%~dpG!filename!!extension!"
            )
        )
       
        REM 如果不存在同名文件夹,则创建新的同名文件夹,并直接移动文件
        if !folderExists!==false (
            mkdir "%target_folder%!filename!"
            move "%%F" "%target_folder%!filename!\!extension!"
        )
    )
    请确保将`source_folder`变量设置为源文件夹的路径,将`target_folder`变量设置为目标文件夹的路径。您还需要将`C:\Path\to\Source\Folder`和`C:\Path\to\Target\Folder`替换为实际的文件夹路径。

    这个脚本将遍历源文件夹中的所有文件,并根据文件名和扩展名将其移动到目标文件夹中。如果目标文件夹中不存在同名文件夹,则会创建新的同名文件夹,并将文件直接移动到新创建的文件夹中。请注意,这个脚本将递归地创建新文件夹(如果它们不存在的话),并根据名称和扩展名将文件移动到相应的文件夹中。

    运行脚本后,它将按照您的要求将文件放置在正确的文件夹中。请确保在执行之前备份重要文件,并在脚本中提供正确的路径和文件名。
    PYG19周年生日快乐!
    回复 支持 1 反对 0

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-30 19:38
  • 签到天数: 71 天

    [LV.6]常住居民II

     楼主| 发表于 2023-11-15 23:29:37 | 显示全部楼层
    china365love 发表于 2023-11-15 23:27
    @echo off
    setlocal enabledelayedexpansion

    [AppleScript] 纯文本查看 复制代码
    @echo off
    setlocal enabledelayedexpansion
    
    REM 设置要处理的文件夹路径
    set "folderPath=C:\Path\to\Your\Folder"
    
    REM 循环遍历文件夹中的文件
    for %%F in ("%folderPath%*") do (
        REM 获取文件名和扩展名
        set "filename=%%~nF"
        set "extension=%%~xF"
        
        REM 检查是否存在同名文件夹
        set "folderExists=false"
        for /d %%G in ("%folderPath%!filename!") do (
            if "%%~zG"=="%~zF" (
                set "folderExists=true"
                REM 创建同名文件夹,如果它不存在的话
                if not exist "%%~dpG" mkdir "%%~dpG"
                REM 将文件移动到同名文件夹中
                move "%%F" "%%~dpG!filename!\%%~xF"
            )
        )

    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    15 小时前
  • 签到天数: 135 天

    [LV.7]常住居民III

    发表于 2023-11-15 22:56:49 | 显示全部楼层
    没太明白,可以放个图嘛看看效果
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 718 天

    [LV.9]以坛为家II

    发表于 2023-11-16 08:05:47 | 显示全部楼层
    谢谢楼主!顶一个。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:59
  • 签到天数: 1096 天

    [LV.10]以坛为家III

    发表于 2023-11-16 08:14:37 | 显示全部楼层
    符合特定使用场景,简单快捷,感谢分享
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 20:36
  • 签到天数: 1909 天

    [LV.Master]伴坛终老

    发表于 2023-11-16 08:51:18 | 显示全部楼层
    这个是干嘛的
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 227 天

    [LV.7]常住居民III

    发表于 2023-11-16 09:07:34 | 显示全部楼层
    谢谢分享好软件,收藏了。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-1-11 08:42
  • 签到天数: 124 天

    [LV.7]常住居民III

    发表于 2023-11-16 10:13:30 | 显示全部楼层
    有个国外叫啥,右键也可以,楼主这个好使。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    7 小时前
  • 签到天数: 581 天

    [LV.9]以坛为家II

    发表于 2023-11-16 11:37:24 | 显示全部楼层
    感谢分享,这个挺有用的
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表