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

[文本处理] 进行数据统计的批处理为何出错?

目的进行数据统计功能。
具体描述:
1.有2个文件,文件1是东西的名称和价格,例如
钢笔,5
铅笔,2
纸(包),10
文件2是东西的数量:
钢笔,8
铅笔,10
粉笔,7
2.实现结果是统计有数量的东西的数量,单价,总价和所有东西的总价格并统计没有价格的东西。
程序执行结果是生成文件3,文件3的内容是:

钢笔,8,5,40
铅笔,10,2,20
总价:60
----------------------
没有价格的东西:
粉笔,7

一会附上我自己的代码。

TOP

@echo off
for /f "tokens=1,2 delims=," %%i in (1.txt) do for /f "tokens=1,2 delims=," %%k in (2.txt) do (
if %%i==%%k set /a valu=%%j*%%l echo %%k,%%l,%j,%valu%>>3.txt )
for /f "tokens=3 delims=," %%a in (3.txt) do set /a num+=%%a echo 总价:%num%>>3.txt
@echo. >>3.txt
@echo off
for /f "tokens=1,2 delims=," %%i in (2.txt) do (
find "%%i" 1.txt
if errorlevel=1 (
echo ................................................>>3.txt
echo 下面是没有价格的东西:>>3.txt
echo %%i,%%j >>3.txt
)
)
这是我的代码,只能实现没有价格的能统计出来,有价格的不能实现,请各位高手给看看。

TOP

中文逗号与英文逗号都分不清

TOP

逗号都改成英文的,但是执行的时候提示:运算符不存在 是什么意思。搞不定了。

TOP

@echo off
for /f "tokens=1,2 delims=," %%i in (1.txt) do for /f "tokens=1,2 delims=," %%k in

(2.txt) do (if %%i==%%k set valu=%%j*%%l echo %%k,%%l,%%j,%valu%>>3.txt )
for /f "tokens=4 delims=," %%a in (3.txt) do set num+=%%a echo 总价:%num%>>3.txt
@echo. >>3.txt
@echo off
for /f "tokens=1,2 delims=," %%i in (2.txt) do (
find "%%i" 1.txt
if errorlevel=1 (
echo ................................................>>3.txt
echo 下面是没有价格的东西:>>3.txt
echo %%i,%%j >>3.txt
)
)
代码修改了一下,没有结果,只有一个结果:
................................................
下面是没有价格的东西:
粉笔,7
其他的统计都是空的。不显示。

TOP

给楼主解决问题了, 测试通过
  1. (
  2. @echo off
  3. for /f "tokens=1,2 delims=," %%a in (1.txt) do set val_%%a=%%b
  4. for /f "tokens=1,2 delims=," %%a in (2.txt) do (
  5. if defined val_%%a (
  6. call set/a sum_=%%b "*" %%val_%%a%%
  7. call set/a sumAll+=%%sum_%%
  8. call echo %%a, %%b, %%val_%%a%%, %%sum_%%
  9. ) else (
  10. set No_%%a=%%a, %%b
  11. ))
  12. echo.
  13. call echo 总价: %%sumAll%%
  14. echo ................................................
  15. echo 下面是没有价格的东西:
  16. for /f "tokens=2 delims==" %%a in ('set No_') do echo %%a
  17. )>>3.txt
复制代码
1

评分人数

TOP

计算用set/a

TOP

re: 当然了  

TOP

回复 7楼 的帖子

谢谢,兄弟,但是好像计算总价格的时候不对。

TOP

@echo off
for /f "tokens=1,2 delims=," %%i in (1.txt) do for /f "tokens=1,2 delims=," %%k in (2.txt) do (if %%i==%%k set /a valu=%%j*%%l echo %%k,%%l,%%j,%valu%>>3.txt)
for /f "tokens=4 delims=," %%a in (3.txt) do set /a num+=%%a echo 总价:%num%>>3.txt
@echo. >>3.txt
@echo off
for /f "tokens=1,2 delims=," %%i in (2.txt) do (
find "%%i" 1.txt
if errorlevel=1 (
echo ................................................>>3.txt
echo 下面是没有价格的东西:>>3.txt
echo %%i,%%j >>3.txt
)
)
这是经过修改的源码,运行提示运算符不存在是啥意思?哪位兄弟给解释一下,我看是乘法运算的问题,但是又不知道是什么回事。

TOP

我试过 可以打到你要的想法 理应鼓励一下 (*^__^*) 嘻嘻……

  1. @echo off&setlocal enabledelayedexpansion
  2. set/a c1=0
  3. set/a c2=0
  4. for /f "delims=, tokens=1,2" %%i in (文件1.txt) do (
  5. set/a c1+=1
  6. for /f "delims=, tokens=2" %%a in (文件2.txt) do (
  7. set/a c2+=1
  8. if "!c1!"=="!c2!" call :use %%i %%j %%a
  9. )
  10. set/a c2=0
  11. )
  12. echo 总价:%sum1%>>文件3.txt
  13. echo 完成
  14. pause
  15. exit
  16. :use
  17. set/a sum=%2*%3
  18. echo %1,%2,%3,!sum!>>文件3.txt
  19. set/a sum1=sum+sum1
复制代码

[ 本帖最后由 lys5300 于 2010-11-15 23:15 编辑 ]

TOP

回复 12楼 的帖子

兄弟呀,我都想死了。执行后文件3的内容就2个字:总价: 就没有了。

TOP

我的代码是取不到两个参数的乘积。崩溃呀!

TOP

回复 13楼 的帖子

可以啊  我试了好几遍了   还有 分隔符是中文的哦  别混淆了。

TOP

返回列表