吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 936|回复: 13
收起左侧

[学习记录] 批处理:一键创建文件夹并移动文件

[复制链接]
tsyhome 发表于 2023-11-15 11:04
琢磨了很久,终于写成了一个批处理脚本,发帖上来分享给大家,初次发这类帖子,高手勿笑,如违规请管理员删除!

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

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

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

使用方法:将上述代码保存为批处理文件(例如,create_folder.bat),然后将其放置在您希望使用的文件夹中。
使用时,只需将文件直接拖到批处理文件上(如果有多个主文件名相同的文件需要移动,只拖动其中任意一个即可)。脚本将自动根据文件的主文件名创建一个同名文件夹(不包括扩展名),并将当前文件夹中主文件名相同(扩展名不同)的所有文件移动到新建的文件夹中,如果该文件夹已经存在,脚本将不会覆盖它。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

1045837055lucy 发表于 2023-11-15 15:44
能不能文件名模糊查找文件移动,比如文件夹里有A,AB、CAB文件,创建A文件夹,把这三个文件都移动到A文件夹下。
wkdxz 发表于 2023-11-15 15:47
帮顶一个,使用字符分割来获取文件名的话,后缀名长度<>3会出错,可以使用%%~nF和%%~xF来获取文件名和后缀,就简单多了。

[Asm] 纯文本查看 复制代码
setlocal enabledelayedexpansion

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



[Asm] 纯文本查看 复制代码
@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 文件夹已创建并文件已移动。
lgqllw 发表于 2023-11-15 15:49
474663216 发表于 2023-11-15 16:43
有没有详细一点的教程
 楼主| tsyhome 发表于 2023-11-15 17:23
1045837055lucy 发表于 2023-11-15 15:44
能不能文件名模糊查找文件移动,比如文件夹里有A,AB、CAB文件,创建A文件夹,把这三个文件都移动到A文件夹 ...

这个用批处理处理起来比较难,我的水平做不了!
 楼主| tsyhome 发表于 2023-11-15 17:25
wkdxz 发表于 2023-11-15 15:47
帮顶一个,使用字符分割来获取文件名的话,后缀名长度3会出错,可以使用%%~nF和%%~xF来获取文件名和后缀, ...

多谢指导,学到了!
 楼主| tsyhome 发表于 2023-11-15 17:28
474663216 发表于 2023-11-15 16:43
有没有详细一点的教程

看3楼的回帖,我也在学习。
Batcher 发表于 2023-11-15 18:35
1045837055lucy 发表于 2023-11-15 15:44
能不能文件名模糊查找文件移动,比如文件夹里有A,AB、CAB文件,创建A文件夹,把这三个文件都移动到A文件夹 ...

文件名模糊查找文件移动.bat
[Asm] 纯文本查看 复制代码
@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

免费评分

参与人数 1吾爱币 +1 收起 理由
1045837055lucy + 1 非常感谢

查看全部评分

Batcher 发表于 2023-11-15 18:47
稍微优化一下顶楼的代码:一键创建文件夹并移动文件.bat
[Asm] 纯文本查看 复制代码
@echo off
if "%~1" == "" (
    echo 请关闭当前窗口,拖放主文件到bat文件上。
    exit /b
)
set "FileName=%~n1"
set "FolderName=%~n1"
md "%FolderName%" 2>nul
move "%FileName%.*" "%FolderName%\"
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 19:13

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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