批处理:一键创建文件夹并移动文件
琢磨了很久,终于写成了一个批处理脚本,发帖上来分享给大家,初次发这类帖子,高手勿笑,如违规请管理员删除!批处理功能:一键创建与“主文件名”名称相同的文件夹,并将当前文件夹中“主文件名”相同的文件移到新创建的文件夹中。
@echo off
setlocal enabledelayedexpansion
set "filename=%~1"
set "foldername=%filename:~0,-4%"
mkdir "%foldername%" 2>nul
move "%foldername%".* "%foldername%\
)
echo 文件夹已创建并文件已移动。
使用方法:将上述代码保存为批处理文件(例如,create_folder.bat),然后将其放置在您希望使用的文件夹中。
使用时,只需将文件直接拖到批处理文件上(如果有多个主文件名相同的文件需要移动,只拖动其中任意一个即可)。脚本将自动根据文件的主文件名创建一个同名文件夹(不包括扩展名),并将当前文件夹中主文件名相同(扩展名不同)的所有文件移动到新建的文件夹中,如果该文件夹已经存在,脚本将不会覆盖它。 能不能文件名模糊查找文件移动,比如文件夹里有A,AB、CAB文件,创建A文件夹,把这三个文件都移动到A文件夹下。 帮顶一个,使用字符分割来获取文件名的话,后缀名长度<>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 文件夹已创建并文件已移动。
测试了一下,不移动啊,能建立文件夹 有没有详细一点的教程{:1_937:} 1045837055lucy 发表于 2023-11-15 15:44
能不能文件名模糊查找文件移动,比如文件夹里有A,AB、CAB文件,创建A文件夹,把这三个文件都移动到A文件夹 ...
这个用批处理处理起来比较难,我的水平做不了! wkdxz 发表于 2023-11-15 15:47
帮顶一个,使用字符分割来获取文件名的话,后缀名长度3会出错,可以使用%%~nF和%%~xF来获取文件名和后缀, ...
多谢指导,学到了! 474663216 发表于 2023-11-15 16:43
有没有详细一点的教程
看3楼的回帖,我也在学习。 1045837055lucy 发表于 2023-11-15 15:44
能不能文件名模糊查找文件移动,比如文件夹里有A,AB、CAB文件,创建A文件夹,把这三个文件都移动到A文件夹 ...
文件名模糊查找文件移动.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%\"
页:
[1]
2