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

[文件操作] [已解决]批处理怎样根据首字母移动文件?

[复制链接]
发表于 2015-6-27 22:13:28 | 显示全部楼层 |阅读模式
求一个批处理,我有一堆txt文件,几十万个,想实现这种效果:把首字母相同的移动到同一个文件夹内,文件夹名字为首字母
请各位大师帮忙!

评分

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

查看全部评分

 楼主| 发表于 2015-6-28 08:56:37 | 显示全部楼层
比如,txt文如下:Primula poissonii海仙报春.txt,Primula sinopurpurea紫花雪山报春.txt……
新建文件夹(名字为P),将他们移动到“P”文件夹
发表于 2015-6-28 09:38:38 | 显示全部楼层
本帖最后由 pcl_test 于 2015-6-28 17:09 编辑
  1. @echo off &setlocal enabledelayedexpansion
  2. for %%a in (*.txt) do (
  3. set str=%%~na
  4. if not exist "!str:~,1!" md "!str:~,1!"
  5. move "!str:~,1!*%%~xa" "!str:~,1!"
  6. )
复制代码

评分

参与人数 1技术 +1 收起 理由
wenlishasha + 1 谢谢帮助!

查看全部评分

发表于 2015-6-28 09:47:15 | 显示全部楼层
  1. @echo off
  2. for %%a in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  3.     if not exist %%a\ md %%a\
  4.     2>nul move %%a*.txt %%a\
  5. )
  6. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
wenlishasha + 1 谢谢!!

查看全部评分

 楼主| 发表于 2015-6-28 14:18:03 | 显示全部楼层
回复 3# pcl_test


请问, 如果不是txt,是文件夹怎么改代码?
 楼主| 发表于 2015-6-28 15:10:51 | 显示全部楼层

文件夹移动

求一个批处理,我有一堆文件夹,几十万个,想实现这种效果:把首字母相同的移动到同一个文件夹内,文件夹名字为首字母
请各位大师帮忙!
比如:Primula poissonii海仙报春,Primula sinopurpurea紫花雪山报春……
新建文件夹(名字为P),将他们移动到“P”文件夹
发表于 2015-6-28 17:22:17 | 显示全部楼层
  1. @echo off &setlocal enabledelayedexpansion
  2. for /d %%a in (*) do (
  3. set str=%%~na
  4. if not exist "!str:~,1!" md "!str:~,1!"
  5. move "%%a" "!str:~,1!"
  6. )
复制代码

评分

参与人数 1技术 +1 收起 理由
wenlishasha + 1 谢谢!!

查看全部评分

 楼主| 发表于 2015-6-28 17:46:59 | 显示全部楼层
谢谢各位!!
 楼主| 发表于 2015-6-29 23:34:36 | 显示全部楼层
回复 7# tigerpower


    移动txt的没试,移动文件夹的确实非常慢
发表于 2018-3-15 18:07:37 | 显示全部楼层
回复 3# pcl_test



这样的代码会有个兼容问题,一旦文件名含有!等延迟变量专用字符,就会被忽略掉。
发表于 2018-3-16 12:25:13 | 显示全部楼层
回复 10# carlmystery
  1. @echo off
  2. for /d %%a in (*) do (
  3.     set "str=%%a"
  4.     setlocal enabledelayedexpansion
  5.     if not exist "!str:~,1!" md "!str:~,1!"
  6.     echo;move "!str!" "!str:~,1!"
  7.     endlocal
  8. )
  9. pause
复制代码
  1. @echo off
  2. for /d %%a in (*) do (
  3.     set "str=%%a"
  4.     call :loop
  5. )
  6. pause&exit
  7. :loop
  8. if not exist "%str:~,1%" md "%str:~,1%"
  9. move "%str%" "%str:~,1%"
  10. goto :eof
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 01:41 , Processed in 0.023364 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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