找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24115|回复: 7

[文件操作] 批处理怎样在文本中查询消费记录?

[复制链接]
发表于 2012-6-9 10:46:03 | 显示全部楼层 |阅读模式
一个消费记录文档1.txt如下:
部门编号        部门名称          人员编号                            人员姓名        消费时间               消费金额        消费数量        消费模式        机器编号        机器名称        餐别        菜谱编号        菜谱名称        硬件机号
1008        三车间        EB07052903693382        张杰        2012-05-02 06:27:21        1.5        1        0:计次        SF0001        售饭机1        早餐                SF0001
1011        模具        XZ110756        李飞        2012-05-02 06:27:38        1.5        1        0:计次        SF0001        售饭机1        早餐                        SF0001
记录是一行一行,即张杰一行记录到sf1001是一行,李飞一行记录到sf1001是一行,
怎么查询指定该月某日,查询有没有记录?
因为是一般只查一个月内容的,只要知道该月几号就行
了:即最多1到31号
能否编写一个小程序输入1号,返回当天的数据?
发表于 2012-6-9 10:52:32 | 显示全部楼层
一行命令就能搞定的事情就不用写个小程序了吧
  1. findstr "2012-05-02" 1.txt
复制代码
发表于 2012-6-9 11:06:34 | 显示全部楼层
本帖最后由 weichenxiehou 于 2012-6-9 11:07 编辑

findstr:
  1. findstr "[0-9][0-9][0-9][0-9]-[0-9][0-9]-05" 1.txt
复制代码
sed:
  1. sed -n "/[0-9]\{4\}-[0-9][0-9]-05/p" 1.txt
复制代码
awk:
  1. gawk "/[0-9][0-9][0-9][0-9]-[0-9][0-9]-05/" 1.txt
复制代码
发表于 2012-6-9 11:18:03 | 显示全部楼层
  1. findstr "2012-05-02" 1.txt >nul && echo 有记录 || echo 没有记录
复制代码
发表于 2012-6-10 11:10:37 | 显示全部楼层
好人做到底吧

@echo off
Setlocal enableDelayedExpansion
set /p d=输入你想查询的日期(格式XXXX-XX-XX;年-月-日)::
cls
set /p b=<1.txt
for %%i in (!b!) do (
        set /a a+=1
        set a!a!=%%i
)
set a=
for /f "tokens=*" %%j in ('findstr "!d!" 1.txt') do (
        for %%k in (%%j) do (
                set /a c+=1&set /a a+=1
                set c!c!=%%k
                call echo %%a!a!%%:%%c!c!%%
        )
        echo -------------------------------------------------
        set a=
        set c=
)
发表于 2012-6-10 11:29:56 | 显示全部楼层
回复 5# poter


    截图干嘛?影响俺的网速啊
 楼主| 发表于 2012-6-11 18:41:53 | 显示全部楼层
回复 2# forfiles


    偶没说清楚
因为文档太大,估计先得查询到某一个人的姓名,然后再查他当天有没有记录
人数上千人,每天可能有零到三次记录
 楼主| 发表于 2012-6-11 18:45:46 | 显示全部楼层
好人做到底吧~~~~~
poter 发表于 2012-6-10 11:10


    偶没说清楚
因为文档太大,估计先得查询到某一个人的姓名,然后再查他当天有没有记录
人数上千人,每天可能有零到三次记录

最好能尽可能减少打字输入查询名字
因为一个人可能要查五六天左右
那样输入一个姓名,一个日期就得有五六次,日期也不好输入
最好先在一个人的所有日期消费记录下输入几号返回结果。
但是那样好像很难。


以下是输入日期查询到当天所有人的记录
@echo off
set /p yandm=2012-06-
set /p what=输入日期(01-31):
findstr "%yandm%%what%" 1.txt && echo 查询到记录 || echo 没有记录
pause
这个只输入今天几号。yandm这个每个月都需要修改
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 04:53 , Processed in 0.017741 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表