[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

一个消费记录文档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号,返回当天的数据?

一行命令就能搞定的事情就不用写个小程序了吧
  1. findstr "2012-05-02" 1.txt
复制代码

TOP

本帖最后由 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
复制代码
看得多说得多,远比不上写得多。

TOP

  1. findstr "2012-05-02" 1.txt >nul && echo 有记录 || echo 没有记录
复制代码

TOP

好人做到底吧

@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=
)

TOP

回复 5# poter


    截图干嘛?影响俺的网速啊

TOP

回复 2# forfiles


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

TOP

好人做到底吧~~~~~
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这个每个月都需要修改

TOP

返回列表