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

[文本处理] 关于滞后赋值,为何第一个显示不正确

[复制链接]
发表于 2025-12-6 17:57:44 | 显示全部楼层 |阅读模式
做了一个简单程序测度滞后赋值,但是找不到为何第一行第一个数据显示不正确,其它都是正确的。请大佬帮助指导一下
测试目标如下:将test.csv中a,b后的数值提取出来。
1)test.csv的数据如下:
a,1,b,2
a,2,b,3
a,3,b,4
a,4,b,5
a,5,b,6
a,6,b,7
a,7,b,8
a,8,b,9
a,9,b,10
a,10,b,11
a,11,b,12
2)编写的程序如下:
%echo off
set "var=a,b"
for %%a in (%var%) do set %%a=true

setlocal enabledelayedexpansion

(echo ,%var%
for /f "tokens=* delims=," %%i in (test.csv) do (
set line=
for %%j in (%%i) do (
if defined !det! set line=!line!,%%j
set "det=%%j"
                     )
echo !line!
                    ))>chk.csv

chk.csv
3)得到的结果如下:
,a,b
,2
,2,3
,3,4
,4,5
,5,6
,6,7
,7,8
,8,9
,9,10
,10,11
,11,12

问题是:第二行期待的结果应该是:,1,2,但是显示仅仅是,2。检查了程序没有找到头绪,请高手帮助指点一下,哪里错了
发表于 2025-12-6 18:46:15 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-12-6 18:52 编辑

回复 1# delab-1

用以下一行流...

  1. (echo,a,b&for /f "tokens=2,4 delims=," %%a in (test.csv) do echo,%%a,%%b)>chk.csv
复制代码
 楼主| 发表于 2025-12-6 19:50:23 | 显示全部楼层
回复 2# aloha20200628


就是要测试一下滞后赋值方法的应用,而且该方法将用于其它复杂应用的。可能是数据有点太整了,给大家误导啦
 楼主| 发表于 2025-12-6 19:58:19 | 显示全部楼层
还期待高手给与帮助
发表于 2025-12-6 20:44:03 | 显示全部楼层
回复 1# delab-1


确保bat和csv都是ANSI编码的情况下,在我电脑上执行没有复现你说的问题。
  1. @echo off
  2. set "var=a,b"
  3. for %%a in (%var%) do (
  4.     set "%%a=true"
  5. )
  6. setlocal enabledelayedexpansion
  7. (echo ,%var%
  8. for /f "tokens=* delims=," %%i in (test.csv) do (
  9.     set "line="
  10.     for %%j in (%%i) do (
  11.         if defined !det! (
  12.             set "line=!line!,%%j"
  13.         )
  14.         set "det=%%j"
  15.     )
  16.     echo,!line!
  17. ))>chk.csv
复制代码
 楼主| 发表于 2025-12-6 20:58:51 | 显示全部楼层
回复 5# ShowCode

我重新把测试的文件在文本编辑器里再保存一下,的确问题消失啦。开始的temp.csv文件是在Excel中建立然后保存为csv的。这种情况的出现,也真是奇怪。以后对文件数据的格式还是要注意一下的
 楼主| 发表于 2025-12-6 20:59:41 | 显示全部楼层
回复 5# ShowCode


    另外,您的编辑器是什么,感觉颜色加色很不错,可否告知一下
发表于 2025-12-6 21:34:48 | 显示全部楼层
回复 7# delab-1


    选中你的全部脚本,点击右上角的“代码”
 楼主| 发表于 2025-12-7 20:18:19 | 显示全部楼层
回复 8# ShowCode

难道不是自己的编译器?是本网页提供的?
发表于 2025-12-7 20:53:42 | 显示全部楼层
发表于 2025-12-7 21:15:01 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 07:05 , Processed in 0.019964 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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