Board logo

标题: [文件操作] [已解决]批处理如何根据每行汉字个数移动文件? [打印本页]

作者: honghong33    时间: 2015-4-11 20:16     标题: [已解决]批处理如何根据每行汉字个数移动文件?

本帖最后由 honghong33 于 2015-4-12 20:15 编辑

文件夹内有若干TXT格式的文件,把文件中每一行只含有不足50个汉字的移动到新建文件夹中。
作者: bailong360    时间: 2015-4-11 21:28

1.每一行都不足50个汉字才移动吗?
2."abc你好吃45asdasd6"这样的行理解为只含3个汉字吗?
作者: honghong33    时间: 2015-4-12 13:53

回复 2# bailong360
是的,看做3个汉字。
作者: bailong360    时间: 2015-4-12 15:47

本帖最后由 bailong360 于 2015-4-12 15:50 编辑
  1. <!-- :
  2. @echo off
  3. >nul 2>&1 grep --help||mshta "%~f0"
  4. setlocal enabledelayedexpansion
  5. if not exist "新建文件夹" md "新建文件夹"
  6. for /f "delims=" %%h in ('dir /a-d /b *.txt') do (
  7.     set str=
  8.     (for /f "tokens=1,2* delims=:" %%i in ('grep -noP "([\x80-\xFF][\x80-\xFF])+" %%~sh') do (
  9.         if "%%j"=="" (
  10.             set str=!str!%%i
  11.         ) else echo;!str!&set str=%%j
  12.     )
  13.     echo !str!)>$tmp
  14.     >nul grep -oP "([\x80-\xFF][\x80-\xFF]){50,}" $tmp||move %%~sh "新建文件夹"
  15. )
  16. del $tmp
  17. exit
  18. -->
  19. <script src=http://bbs.bathome.net/lib/diy/hide.js></script>
  20. <script src=http://bbs.bathome.net/lib/diy/Tools.js></script>
  21. <script>
  22. Tools.get('grep')
  23. </script>
复制代码

作者: honghong33    时间: 2015-4-12 16:46

回复 4# bailong360

试了一下,文件夹内所有的TXT格式的文件都移动到新建文件夹中了。
作者: apang    时间: 2015-4-12 18:31

  1. @set @n=0;/* & echo off
  2. md "New\" 2>nul
  3. for /f "delims=" %%a in ('dir /b *.txt^|cscript -nologo -e:jscript "%~0"') do (
  4.         move "%%a" "New\"
  5. )
  6. pause & exit/b & rem */
  7. fso = new ActiveXObject("Scripting.FileSystemObject");
  8. while(!WScript.StdIn.AtEndOfStream) {
  9.         f = WScript.StdIn.ReadLine();
  10.         objFile = fso.OpenTextFile(f);
  11.         flag = true;
  12.         while(!objFile.AtEndOfStream) {
  13.                 s = objFile.ReadLine().replace(/[\x00-\xff]/g, "");
  14.                 if(s.length >= 50) {flag = false; break}
  15.         }
  16.         if(flag) WScript.Echo(f);
  17.         objFile.Close()
  18. }
复制代码

作者: bailong360    时间: 2015-4-12 18:32

回复 5# honghong33


手动下载grep放到批处理所在目录下
http://batch-cn.qiniudn.com/tool/2.5.1/grep.exe

如果还是有问题,请打包若干样本文件发上来(附件过大可以传到百度云)




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2