标题: [文件操作] 批处理怎样在文本中查询消费记录? [打印本页]
作者: jshuanya 时间: 2012-6-9 10:46 标题: 批处理怎样在文本中查询消费记录?
一个消费记录文档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号,返回当天的数据?
作者: forfiles 时间: 2012-6-9 10:52
一行命令就能搞定的事情就不用写个小程序了吧- findstr "2012-05-02" 1.txt
复制代码
作者: weichenxiehou 时间: 2012-6-9 11:06
本帖最后由 weichenxiehou 于 2012-6-9 11:07 编辑
findstr:- findstr "[0-9][0-9][0-9][0-9]-[0-9][0-9]-05" 1.txt
复制代码
sed:- sed -n "/[0-9]\{4\}-[0-9][0-9]-05/p" 1.txt
复制代码
awk:- gawk "/[0-9][0-9][0-9][0-9]-[0-9][0-9]-05/" 1.txt
复制代码
作者: canyuexiaolang 时间: 2012-6-9 11:18
- findstr "2012-05-02" 1.txt >nul && echo 有记录 || echo 没有记录
复制代码
作者: poter 时间: 2012-6-10 11:10
好人做到底吧
@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=
)
作者: forfiles 时间: 2012-6-10 11:29
回复 5# poter
截图干嘛?影响俺的网速啊
作者: jshuanya 时间: 2012-6-11 18:41
回复 2# forfiles
偶没说清楚
因为文档太大,估计先得查询到某一个人的姓名,然后再查他当天有没有记录
人数上千人,每天可能有零到三次记录
作者: jshuanya 时间: 2012-6-11 18:45
好人做到底吧~~~~~
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这个每个月都需要修改
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |