[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. @echo off
  2. set/p file=请把要处理的文件拖到此处:
  3. for /f "delims=" %%a in ("%file:"=%") do (
  4.      md "%%~na"
  5.      split -a 3 -b 100k "%file:"=%" "%%~na\%%~na_"
  6.      ren "%%~na\*" "*.txt"
  7. )
  8. pause
复制代码
借助了第三方工具split.exe,用最合适的代码做最合适的事情吧。
请先下载3楼提供的下载链接,再运行此批处理。
心绪平和,眼藏静谧。

TOP

三楼BATCHER兄提供的链接中的split.exe没有-a参数,版本问题。。。
使用以下代码:
  1. @echo off
  2. set/p file=请把要处理的文件拖到此处:
  3. for /f "delims=" %%a in ("%file:"=%") do (
  4.      md "%%~na"
  5.      split  -b 100k "%file:"=%" "%%~na\%%~na_"
  6.      ren "%%~na\*" "*.txt"
  7. )
  8. pause
复制代码
心绪平和,眼藏静谧。

TOP

不知这样可否:
第一个文件的尾部(最后出现的一个全角句号或问号到全文结束)会出现在第二个文件的头部。即:这段文本信息即出现在第一个文件中(尾部),也出现在第二个文本中(头部)。不过借助了两个第三方工具split.exe wfr.exe
  1. @echo off
  2. :loop
  3. setlocal enabledelayedexpansion
  4. set/p file=请把要处理的文件拖到此处:
  5. for /f "delims=" %%a in ("%file:"=%") do (
  6.      md "%%~na"
  7.      split  -b 100k "%file:"=%" "%%~na\%%~na_"
  8.      ren "%%~na\*" "*.txt"
  9.      set "name=%%~na"
  10. )
  11. for /f "delims=" %%a in ('dir /b /s /on "%name%\*.txt"') do set/a n+=1&set "_!n!=%%a"
  12. set/a n-=1
  13. for /l %%i in (1 1 %n%) do (
  14.      set/a x=%%i+1
  15.      type "!_%%i!"|wfr /exp /r:"[\r\n]" /t|wfr /exp /r:".*[。?]" /t>"%name%\tmp.txt"
  16.      (type "%name%\tmp.txt"&echo.&call,type "%%_!x!%%")>"%name%\tmp.tmp"
  17.      call,move /y "%name%\tmp.tmp" "%%_!x!%%"
  18. )
  19. del "%name%\tmp.txt"
  20. endlocal
  21. pause
复制代码
wfr.exe下载:http://bbs.bathome.net/thread-1909-1-2.html
从第二个文件开始,大小会大于100k。
先下载split.exe wfr.exe 放到此批处理所在目录中OK。

[ 本帖最后由 pusofalse 于 2008-10-9 22:07 编辑 ]
心绪平和,眼藏静谧。

TOP

去掉了wfr.exe 只用SPLIT.EXE。应该可以了。
  1. @echo off
  2. :loop
  3. setlocal enabledelayedexpansion
  4. set/p file=请把要处理的文件拖到此处:
  5. for /f "delims=" %%a in ("%file:"=%") do (
  6.      md "%%~na"
  7.      split -b 99k "%file:"=%" "%%~na\%%~na_"
  8.      ren "%%~na\*" "*.txt"
  9.      set "name=%%~na"
  10. )
  11. for /f "delims=" %%a in ('dir /b /s /on "%name%\*.txt"') do set/a n+=1&set "_!n!=%%a"
  12. set/a n-=1
  13. for /l %%i in (1 1 %n%) do (
  14.      set/a x=%%i+1
  15.      findstr /v $ "!_%%i!">tmp&findstr $ "!_%%i!">tmp1
  16.      move /y tmp1 "!_%%i!"
  17.      (type tmp&echo.&call type "%%_!x!%%")>tmp2
  18.      call,move /y tmp2 "%%_!x!%%"
  19. )
  20. del tmp
  21. endlocal
  22. pause
复制代码
心绪平和,眼藏静谧。

TOP

也发现了如此的问题,应该是是split.exe的BUG。对此无能为力~
心绪平和,眼藏静谧。

TOP

返回列表