标题: [文件操作] 批处理怎样把文件分存到文件夹? [打印本页]
作者: 2096258508 时间: 2023-3-12 10:27 标题: 批处理怎样把文件分存到文件夹?
我有1~1000.TXT这几个文件,需要新建99个文件夹,每个里面放10个文件,并且是按照数字大小排的,例如1(文件夹)里面有1.txt 2.txt....10.txt 谢谢大佬!!!
作者: jyswjjgdwtdtj 时间: 2023-3-12 11:10
本帖最后由 jyswjjgdwtdtj 于 2023-3-12 12:04 编辑
- set fso=createobject("scripting.filesystemobject")
- set nowfolder=fso.getfolder("txt所在地文件夹")
- tofolder="100个文件夹所在地文件夹"
- for each file in nowfolder.files
- nowtofolder=tofolder&"\"&cstr(fix((split(file.name,".")(0))/10)+1)
- if not fso.folderexists(nowtofolder) then fso.createfolder(nowtofolder)
- fso.copyfile file.path,nowtofolder&"\"&file.name,true
- next
复制代码
如果比如800到810没有文件
就不会创建80号文件夹
保存为vbs文件
作者: Batcher 时间: 2023-3-12 11:38
回复 1# 2096258508
test_1.bat
- 文件名 1.txt ~ 1000.txt
- 中间没有缺失的文件名
- @echo off
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- for /l %%i in (1,1,1000) do (
- set /a FolderName=FileCount/10+1
- set /a FileCount+=1
- md "!FolderName!" 2>nul
- move "%%i.txt" "!FolderName!"
- )
复制代码
作者: Batcher 时间: 2023-3-12 11:39
回复 1# 2096258508
test_2.bat
- 文件名在 1.txt ~ 1000.txt 这个范围内
- 中间可能有缺失的文件名
- @echo off
- set "FileMax=10"
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- set "FileCount=0"
- set "FolderName=1"
- for /l %%i in (1,1,1000) do (
- if exist "%%i.txt" (
- set /a FileCount+=1
- if !FileCount! gtr !FileMax! (
- set /a FolderName+=1
- set "FileCount=1"
- )
- if not exist "!FolderName!" (
- md "!FolderName!"
- )
- move "%%i.txt" "!FolderName!"
- )
- )
复制代码
作者: buyiyang 时间: 2023-3-12 11:57
本帖最后由 buyiyang 于 2023-3-12 14:39 编辑
- @echo off
- setlocal enabledelayedexpansion
- for %%i in (*.txt) do (
- set /a d=^(%%~ni+9^)/10
- md "!d!" 2>nul
- move "%%i" "!d!\"
- )
- pause
复制代码
如果1~1000.txt有缺失,实现每个文件夹十个文件- @echo off
- setlocal enabledelayedexpansion
- if "%~1" neq "mv" (
- for /f "tokens=1,2" %%a in ('"%~f0" mv ^| sort') do (
- set /a n+=1
- set /a d=^(!n!+9^)/10
- echo f | xcopy /y "%%b" "!d!\%%a"
- )
- pause
- ) else (
- for %%i in (*.txt) do (
- set /a f=10000+%%~ni
- echo.!f:~1!.txt %%i
- )
- )
复制代码
作者: 77七 时间: 2023-3-12 12:33
- @echo off
- set /a m=0
- setlocal enabledelayedexpansion
- for /l %%l in (1,1,990) do (
- set n=%%l
- if !n:~-1! equ 1 (
- set /a m+=1
- md "!m!\"
- )
- move "%%l.txt" "!m!\" 2>nul
- )
- endlocal
- pause
复制代码
只创建99个文件夹
作者: terse 时间: 2023-3-12 15:26
- @echo off
- set m=10
- setlocal enabledelayedexpansion
- for /l %%i in (1,1,990) do (
- if exist "%%i.txt" (
- set /a n=num/m+1,num+=1
- md "!n!" 2>nul
- move "%%i.txt" "!n!\"
- )
- )
- pause
复制代码
作者: 2096258508 时间: 2023-3-12 23:47
回复 2096258508
test_1.bat
文件名 1.txt ~ 1000.txt
中间没有缺失的文件名
Batcher 发表于 2023-3-12 11:38
如果我的文件不止这些是需要修改什么或者可以使他变得灵活检测有几个文件,我的文件都是1-n.TXT的谢谢大佬!!!
作者: qixiaobin0715 时间: 2023-3-13 09:11
本帖最后由 qixiaobin0715 于 2023-3-13 09:18 编辑
回复 8# 2096258508 - @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
- set /a "Folder=(%%~ni-1)/10+1"
- md "!Folder!" 2>nul
- move "%%i" "!Folder!\">nul
- )
- pause
复制代码
没仔细看其他回帖,实际上和5楼第1组代码基本雷同。
作者: Batcher 时间: 2023-3-13 09:37
回复 8# 2096258508
统计txt文件个数1-1.bat- @echo off
- cd /d "%~dp0"
- set "FileNum=0"
- for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
- set /a FileNum+=1
- )
- echo The number of txt files is: %FileNum%
- pause
复制代码
统计txt文件个数1-2.bat- @echo off
- cd /d "%~dp0"
- set "FileNum=0"
- for %%i in (*.txt) do (
- set /a FileNum+=1
- )
- echo The number of txt files is: %FileNum%
- pause
复制代码
统计txt文件个数1-3.bat- @echo off
- cd /d "%~dp0"
- set "FileNum=0"
- for /f "delims=" %%i in ('dir /b /a-d *.txt ^| find /c /v ""') do (
- set "FileNum=%%i"
- )
- echo The number of txt files is: %FileNum%
- pause
复制代码
作者: 2096258508 时间: 2023-3-13 10:28
回复 10# Batcher
谢谢大佬,问题解决了,真是为我省了大把时间
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |