标题: [文本处理] 【已解决】批处理如何统计一个文件里有多少个数据,并写入文件名? [打印本页]
作者: ysrr2011 时间: 2014-7-24 10:41 标题: 【已解决】批处理如何统计一个文件里有多少个数据,并写入文件名?
比如一个文件夹1里有许多文本文件1.txt,2.txt...,1.txt里有58个数据,2.txt里有118个数据...,将其全部统计出来,并将对应的文件名改为1-58.txt,2-118.txt...,请问如何实现?
作者: terse 时间: 2014-7-24 11:59
条件 文件不含空行 文件名不含空格- @echo off
- for /f "tokens=1*delims=:- " %%i in ('FIND /c /v "" *.txt') do echo ren %%i %%~ni-%%j%%~xi
- pause
复制代码
作者: ysrr2011 时间: 2014-7-24 12:30
回复 2# terse
修改了一下,去了一个echo,可以运行了,但必须放在文件夹1下,可以加入路径吗?
@echo off
for /f "tokens=1*delims=:- " %%i in ('FIND /c /v "" *.txt') do ren %%i %%~ni-%%j%%~xi
pause
作者: DAIC 时间: 2014-7-24 13:14
回复 3# ysrr2011
@echo off
cd /d "C:\test"
for /f "tokens=1*delims=:- " %%i in ('FIND /c /v "" *.txt') do echo ren %%i %%~ni-%%j%%~xi
pause
作者: miskel 时间: 2014-7-24 14:53
- @echo off&setlocal enabledelayedexpansion
- ::获取资料夹内TXT文件内数据量并改名
- color 1f
- set /p sr=请选择1(修改)2(恢复):
-
- if %sr%==1 goto :gg
- if %sr%==2 goto :hh
- goto :eof
-
- :gg
- if exist 文件名.log del 文件名.log
- for /f "delims=" %%I in ('dir /a-d /b *.TXT') do (
- set /a N+=1,H=10000+N
- set "H=!H:~-2!"
- set /a M=0
- for /f "delims=" %%K in (%%I) do (
- set /a M+=1
- )
- echo 文件%%~nI内数量为!M!个
- echo %%I^|%%~nI-!M!.txt>>文件名.log
- ren %%I %%~nI-!M!.txt
- )
- goto :end
-
- :hh
- for /f "delims=" %%i in ('dir /a-d/b *.txt') do (
- for /f "tokens=1 delims=^|" %%f in ( 文件名.log ) do (
- ren %%i %%f
- )
- )
-
- :end
- echo.修改完成!4秒后退出...
- ping -n 4 127.1>nul
-
-
-
- ::简要说明:对于变量%0~%9及for里使用的%%i这样的变量,可以有以下的语法:
- :: ~I - 删除任何引号("),扩充 %I
- :: %%~fI - 将 %%I 扩充到一个完全合格的路径名
- :: %%~dI - 仅将 %%I 扩充到一个驱动器号
- :: %%~pI - 仅将 %%I 扩充到一个路径
- :: %%~nI - 仅将 %%I 扩充到一个文件名
- :: %%~xI - 仅将 %%I 扩充到一个文件扩展名
- :: %%~sI - 扩充的路径只含有短名
- :: %%~aI - 将 %%I 扩充到文件的文件属性
- :: %%~tI - 将 %%I 扩充到文件的日期/时间
- :: %%~zI - 将 %%I 扩充到文件的大小
复制代码
我写了个,测试可以满足你的要求,增加了恢复功能
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |