找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 9362|回复: 5

[文件操作] [已解决]批处理归类文件会将文件夹移动出来的问题

[复制链接]
发表于 2025-3-16 14:58:59 | 显示全部楼层 |阅读模式
  1. for /r %%a in (*) do call :MvFile "%%~a"
  2. pause
  3. exit
  4. :MvFile
  5. if "%~f1"=="%~f0" goto :eof
  6. set "Str=%~n1"
  7. if not exist "%Str:~0,3%" md "%Str:~0,3%"
  8. move "%~1" "%Str:~0,3%"
  9. goto :eof
复制代码
代码如上,for 加上 /r 后便可对子目录里的文件进行处理,但是在处理完后会将创建的文件夹移动出来,请问如何解决? 使其子文件夹里处理后的文件夹不被移动出来?

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2025-3-16 15:48:48 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-3-16 15:50 编辑

回复 1# a6236130

用 for %%F in (*) do ... 句式就可能出现这类问题,改用以下代码试试...

  1. @echo off &for /f "delims=" %%F in ('dir /b/s/a-d') do if /i "%~f0" neq "%%F" (
  2.    set "nF=%%~nF" &setlocal enabledelayedexpansion &md "!nF:~0,3!" 2>nul
  3.    move /y "%%F" "!nF:~0,3!" &endlocal)
  4. pause&exit/b
复制代码
 楼主| 发表于 2025-3-16 16:08:22 | 显示全部楼层
回复 2# aloha20200628


   我测试了一下 还是会被移动出来
发表于 2025-3-16 17:11:36 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /r %%a in (*) do (
  4.     if not "%%a"=="%~f0" (
  5.         set "file=%%a"
  6.         set "folder=%%~dpa!file:~0,3!"
  7.         if not exist "!folder!" md "!folder!"
  8.         move "%%a" "!folder!" >nul
  9.     )
  10. )
  11. pause
复制代码
发表于 2025-3-16 18:08:26 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-3-16 19:36 编辑

回复 3# a6236130

试试以下代码, 猜测楼主想要这个效果吧...

  1. @echo off &for /f "delims=" %%F in ('dir /b/s/a-d') do if /i "%~f0" neq "%%F" (
  2.     set "nF=%%~nF" &setlocal enabledelayedexpansion &md "%%~dpF!nF:~0,3!" 2>nul
  3.     move /y "%%F" "%%~dpF!nF:~0,3!" &endlocal)
  4. pause&exit/b
复制代码

评分

参与人数 1技术 +1 收起 理由
a6236130 + 1 完美执行

查看全部评分

 楼主| 发表于 2025-3-16 20:21:24 | 显示全部楼层
回复 5# aloha20200628


    感谢大哥,是我要的效果!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:29 , Processed in 0.020190 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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