求一段批处理(.bat)代码,在一个文件夹里有至少10000个文本文件,我想在该文件夹下建立若干子文件夹,每

补充:每500个文本文件放入一个文件夹。谢谢,高分答谢。

第1个回答  2012-02-29
20分算高分答谢???

@echo off
setlocal enabledelayedexpansion
set a=0
for %%i in (*.txt) do (
set /a a+=1
set /a x=a/500

if not exist a!x! (
mkdir a!x!
move %%i a!x! > nul
) else (
move %%i a!x! > nul
)
)

放在你要分类的目录运行即可,如果不是txt 比如是 doc,你就修改*.txt 为 *.doc
给我加分....追问

谢谢,但运行时提示“命令语法不正确”,但可以移动,每个文件夹里的文件达不到500个,而且最后原文件夹里会有不到500个文件的剩余。不过这样已经非常感谢了,一定会加分的,因为分数有限,全送给你

追答

我在我电脑上又实验了一下,没任何问题。要不远程给你看看?
还有就就是,第一个文件夹是499个,后面的是500个文件。

本回答被提问者采纳
第2个回答  2012-02-29
@echo off
set n=0
for /f "delims=" %%i in ('dir/b path') do (
if "!n!%500"=="0" set name=!n!&&md !name!
copy/y %%i !name!\%%i
set/a n+=1)
rem 你没说建立的文件夹用什么名称,所以简便的取了名。追问

首先感谢您的回复。因我一点都不懂这个,也怪我没有说清楚。比如我的文件都存在D盘123目录下,每个新文件夹命名按照a001、a002……类推,应该怎么改,盼答。

追答

@echo off
set n=0
set m=1
for /f "delims=" %%i in ('dir/b d:\123') do (
if "!n!%500"=="0" if !m! lss 10 (set name=a00!m!&md !name!&set/a m+=1) else (set name=a0!m!&md !name!&set/a m+=1)
copy/y %%i !name!\%%i
set/a n+=1)

第3个回答  2020-03-08
@echo off&setlocal enabledelayedexpansion
set m=1
(for %%a in (*) do (
set/a "n+=1,1/(100*m-n+1)"||(set/am+=1)
md !m!&move "%%a" .\!m!\
))2>nul
相似回答