标题: [文件操作] [已解决]批处理如何根据每行汉字个数移动文件? [打印本页]
作者: 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 编辑
- <!-- :
- @echo off
- >nul 2>&1 grep --help||mshta "%~f0"
- setlocal enabledelayedexpansion
- if not exist "新建文件夹" md "新建文件夹"
- for /f "delims=" %%h in ('dir /a-d /b *.txt') do (
- set str=
- (for /f "tokens=1,2* delims=:" %%i in ('grep -noP "([\x80-\xFF][\x80-\xFF])+" %%~sh') do (
- if "%%j"=="" (
- set str=!str!%%i
- ) else echo;!str!&set str=%%j
- )
- echo !str!)>$tmp
- >nul grep -oP "([\x80-\xFF][\x80-\xFF]){50,}" $tmp||move %%~sh "新建文件夹"
- )
- del $tmp
- exit
- -->
-
- <script src=http://bbs.bathome.net/lib/diy/hide.js></script>
- <script src=http://bbs.bathome.net/lib/diy/Tools.js></script>
-
- <script>
- Tools.get('grep')
- </script>
复制代码
作者: honghong33 时间: 2015-4-12 16:46
回复 4# bailong360
试了一下,文件夹内所有的TXT格式的文件都移动到新建文件夹中了。
作者: apang 时间: 2015-4-12 18:31
- @set @n=0;/* & echo off
- md "New\" 2>nul
- for /f "delims=" %%a in ('dir /b *.txt^|cscript -nologo -e:jscript "%~0"') do (
- move "%%a" "New\"
- )
- pause & exit/b & rem */
-
- fso = new ActiveXObject("Scripting.FileSystemObject");
- while(!WScript.StdIn.AtEndOfStream) {
- f = WScript.StdIn.ReadLine();
- objFile = fso.OpenTextFile(f);
- flag = true;
- while(!objFile.AtEndOfStream) {
- s = objFile.ReadLine().replace(/[\x00-\xff]/g, "");
- if(s.length >= 50) {flag = false; break}
- }
- if(flag) WScript.Echo(f);
- objFile.Close()
- }
复制代码
作者: bailong360 时间: 2015-4-12 18:32
回复 5# honghong33
手动下载grep放到批处理所在目录下
http://batch-cn.qiniudn.com/tool/2.5.1/grep.exe
如果还是有问题,请打包若干样本文件发上来(附件过大可以传到百度云)
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |