[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理怎样把文件分存到文件夹?

我有1~1000.TXT这几个文件,需要新建99个文件夹,每个里面放10个文件,并且是按照数字大小排的,例如1(文件夹)里面有1.txt 2.txt....10.txt 谢谢大佬!!!

本帖最后由 jyswjjgdwtdtj 于 2023-3-12 12:04 编辑
  1. set fso=createobject("scripting.filesystemobject")
  2. set nowfolder=fso.getfolder("txt所在地文件夹")
  3. tofolder="100个文件夹所在地文件夹"
  4. for each file in nowfolder.files
  5. nowtofolder=tofolder&"\"&cstr(fix((split(file.name,".")(0))/10)+1)
  6. if not fso.folderexists(nowtofolder) then fso.createfolder(nowtofolder)
  7. fso.copyfile file.path,nowtofolder&"\"&file.name,true
  8. next
复制代码
如果比如800到810没有文件
就不会创建80号文件夹

保存为vbs文件

TOP

回复 1# 2096258508


test_1.bat

  • 文件名 1.txt ~ 1000.txt
  • 中间没有缺失的文件名
  1. @echo off
  2. cd /d "%~dp0"
  3. setlocal enabledelayedexpansion
  4. for /l %%i in (1,1,1000) do (
  5.     set /a FolderName=FileCount/10+1
  6.     set /a FileCount+=1
  7.     md "!FolderName!" 2>nul
  8.     move "%%i.txt" "!FolderName!"
  9. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 1# 2096258508


test_2.bat


  • 文件名在 1.txt ~ 1000.txt 这个范围内
  • 中间可能有缺失的文件名
  1. @echo off
  2. set "FileMax=10"
  3. cd /d "%~dp0"
  4. setlocal enabledelayedexpansion
  5. set "FileCount=0"
  6. set "FolderName=1"
  7. for /l %%i in (1,1,1000) do (
  8.     if exist "%%i.txt" (
  9.         set /a FileCount+=1
  10.         if !FileCount! gtr !FileMax! (
  11.             set /a FolderName+=1
  12.             set "FileCount=1"
  13.         )
  14.         if not exist "!FolderName!" (
  15.             md "!FolderName!"
  16.         )
  17.         move "%%i.txt" "!FolderName!"
  18.     )
  19. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 buyiyang 于 2023-3-12 14:39 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%i in (*.txt) do (
  4. set /a d=^(%%~ni+9^)/10
  5. md "!d!" 2>nul
  6. move "%%i" "!d!\"
  7. )
  8. pause
复制代码
如果1~1000.txt有缺失,实现每个文件夹十个文件
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. if "%~1" neq "mv" (
  4. for /f "tokens=1,2" %%a in ('"%~f0" mv ^| sort') do (
  5. set /a n+=1
  6. set /a d=^(!n!+9^)/10
  7. echo f | xcopy /y "%%b" "!d!\%%a"
  8. )
  9. pause
  10. ) else (
  11. for %%i in (*.txt) do (
  12. set /a f=10000+%%~ni
  13. echo.!f:~1!.txt %%i
  14. )
  15. )
复制代码

TOP

  1. @echo off
  2. set /a m=0
  3. setlocal enabledelayedexpansion
  4. for /l %%l in (1,1,990) do (
  5. set n=%%l
  6. if !n:~-1! equ 1 (
  7. set /a m+=1
  8. md "!m!\"
  9. )
  10. move "%%l.txt" "!m!\" 2>nul
  11. )
  12. endlocal
  13. pause
复制代码
只创建99个文件夹
bat小白,请多指教!谢谢!

TOP

  1. @echo off
  2. set m=10
  3. setlocal enabledelayedexpansion
  4. for /l %%i in (1,1,990) do (
  5.      if exist "%%i.txt" (
  6.         set /a n=num/m+1,num+=1
  7.         md "!n!" 2>nul
  8.         move "%%i.txt" "!n!\"
  9.     )
  10. )
  11. pause
复制代码

TOP

回复  2096258508


test_1.bat

  • 文件名 1.txt ~ 1000.txt
  • 中间没有缺失的文件名
    Batcher 发表于 2023-3-12 11:38


  • 如果我的文件不止这些是需要修改什么或者可以使他变得灵活检测有几个文件,我的文件都是1-n.TXT的谢谢大佬!!!

    TOP

    本帖最后由 qixiaobin0715 于 2023-3-13 09:18 编辑

    回复 8# 2096258508
    1. @echo off
    2. setlocal enabledelayedexpansion
    3. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
    4.     set /a "Folder=(%%~ni-1)/10+1"
    5.     md "!Folder!" 2>nul
    6.     move "%%i" "!Folder!\">nul
    7. )
    8. pause
    复制代码
    没仔细看其他回帖,实际上和5楼第1组代码基本雷同。

    TOP

    回复 8# 2096258508


    统计txt文件个数1-1.bat
    1. @echo off
    2. cd /d "%~dp0"
    3. set "FileNum=0"
    4. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
    5.     set /a FileNum+=1
    6. )
    7. echo The number of txt files is: %FileNum%
    8. pause
    复制代码
    统计txt文件个数1-2.bat
    1. @echo off
    2. cd /d "%~dp0"
    3. set "FileNum=0"
    4. for %%i in (*.txt) do (
    5.     set /a FileNum+=1
    6. )
    7. echo The number of txt files is: %FileNum%
    8. pause
    复制代码
    统计txt文件个数1-3.bat
    1. @echo off
    2. cd /d "%~dp0"
    3. set "FileNum=0"
    4. for /f "delims=" %%i in ('dir /b /a-d *.txt ^| find /c /v ""') do (
    5.     set "FileNum=%%i"
    6. )
    7. echo The number of txt files is: %FileNum%
    8. pause
    复制代码
    我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
    【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
    【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

    TOP

    回复 10# Batcher


        谢谢大佬,问题解决了,真是为我省了大把时间

    TOP

    返回列表