china365love 发表于 2023-11-15 21:57:26

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

本帖最后由 china365love 于 2023-11-15 23:38 编辑

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

拖拽批处理一键创建文件夹并把文件移动到对应的新创建的文件夹中的软件是一款高效易用的工具,能够简化文件管理流程,提高工作效率。该软件通过简单的拖拽操作,即可快速创建文件夹并自动将文件移动到对应的文件夹中,无需手动操作,大大节省了时间和精力。
@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操作系统上运行,界面简洁易用,操作简单方便。用户只需将需要创建的文件夹和移动的文件拖放到软件界面上,即可一键完成创建和移动操作。此外,该软件还提供了丰富的自定义选项,用户可以根据自己的需求进行设置,以满足不同的文件管理需求。

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

china365love 发表于 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`替换为实际的文件夹路径。

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

运行脚本后,它将按照您的要求将文件放置在正确的文件夹中。请确保在执行之前备份重要文件,并在脚本中提供正确的路径和文件名。

china365love 发表于 2023-11-15 23:29:37

china365love 发表于 2023-11-15 23:27
@echo off
setlocal enabledelayedexpansion




@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"
      )
    )

dazuyishi1314 发表于 2023-11-15 22:56:49

{:lol:}没太明白,可以放个图嘛看看效果

悟道001 发表于 2023-11-16 08:05:47

谢谢楼主!顶一个。

echo 发表于 2023-11-16 08:14:37

符合特定使用场景,简单快捷,感谢分享

QQ541500223 发表于 2023-11-16 08:51:18

这个是干嘛的

yzqmxh 发表于 2023-11-16 09:07:34

谢谢分享好软件,收藏了。

ok98 发表于 2023-11-16 10:13:30

有个国外叫啥,右键也可以,楼主这个好使。

LuckyClover 发表于 2023-11-16 11:37:24

感谢分享,这个挺有用的
页: [1] 2
查看完整版本: 拖拽批处理一键创建文件夹并把文件移动到对应的新创建的文件夹中的软件