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

[文本处理] [已解决]for命令嵌套问题请教,楼下加了一个嵌套优化问题

本帖最后由 loquat 于 2011-11-15 14:05 编辑

我有一个文件,多行,各行格式如下
  1. AD;编号;A;;B;;;;;;;;;;;C;;;;
复制代码
我想把“编号”改成从0开始步进1的数字
  1. AD;0;A;;B;;;;;;;;;;;C;;;;
  2. AD;1;A;;B;;;;;;;;;;;C;;;;
复制代码
于是我写了如下代码
  1. setlocal enabledelayedexpansion
  2. for /f "tokens=1,2* delims=; " %%i in (1.txt) do (
  3. for /l %%a in (0,1,10) do (
  4. set var=%%a
  5. echo %%i;!var!;%%k >>out.txt
  6. )
  7. )
复制代码
这段代码各行都要循环11次,怎么让每行只输出一次?
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2

我自己看了论坛帖子解决了
不过效率没有你的代码高,谢谢了

TOP

这个也是嵌套的问题
  1. @echo off
  2. for /f "tokens=1,2,3*" %%i in (1.txt) do (
  3. for /f "tokens=1,2,3*" %%o in (2.txt) do (
  4.   if %%i==%%o echo %%i %%j %%k %%r >>out.txt
  5. )
  6. )
复制代码
两个文件格式都相同
  1. A: B C ;D
复制代码
代码是把2.txt的D部分替换到1.txt

不知道效率可否提高?

TOP

A是编号,所以各行的A都不同

TOP

回复 6# CrLf
其实文件格式是这样的
  1. 0448: 00000000 94300020 ; 112: void* memset( void* mem, char chr, int size );
复制代码
代码1,根据要求自己修改了,可用

代码2,输出错位了
第二行的注释输出到第一行去了
@echo off&setlocal enabledelayedexpansion
(for /f "delims=;" %%a in (1.vkp) do (
   set /p str=
   echo %%a;!str:*;=!
))<2.vkp>out.txt
pause

TOP

返回列表