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

[文本处理] [已解决]批处理嵌套for变量无法正确赋值无法正确替换字符

有三个文件,
  • config.txt:其中是以逗号分开的两列值
a;A
b;B
c;C
d;D
  • source.txt:
This is lower case:[lower]
This is upper case:[upper]
  • test.bat 是用来创建以config.txt文件中第一列为命名的txt文件,这些文件的内容模板是source.txt,然后把创建好的文件中的[lower],[upper]用config.txt的相应行来替换。如a.txt的内容为:
This is lower case:a
This is upper case:A
test.bat的使用格式是:test.bat config.txt source.txt 其内容为:
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. md tempfolder
  4. for /f "tokens=1,2 delims=;" %%i in (%1) do (
  5.     for /f "delims=" %%m in (%2) do (        
  6.         set temp=%%m
  7.         @echo %%i
  8.         @echo %temp%
  9.         @echo %temp:[lower]=%%i%>>tempfolder\i%%.txt
  10.     )
  11. )
复制代码

这个例子并没有实现我想要的结果。特别是红色标注的两句,不知道错在那里,还请仔细分析指出。谢谢。



[ 本帖最后由 z_l_106 于 2010-5-12 17:47 编辑 ]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

回复 2楼 的帖子

%mylangs%应该是%temp%
%temp:[lower]=%%i%
非常感谢二楼的回复。
这个分成几个文件也是可以的吧,只是想到了这样来组织,还烦请指点一下!

[ 本帖最后由 z_l_106 于 2010-5-12 17:10 编辑 ]

TOP

回复 4楼 的帖子

太感谢了,都不知道用什么语言来表达了。
问了好几个同事,可惜都不怎么懂。
    set t=!t:[lower]=%%i!
        set t=!t:[upper]=%%j!
        echo.!t!
这三行,能否帮我解释一下,我们有的同事说在for内不能定义变量,我也试了,值会不对。有什么原理,还请指点?关于替换,为什么我写的%temp:[lower]=%%i%不对?麻烦了!

TOP

回复 6楼 的帖子

我是昨天才开始研究BAT方面知识的,所以欠缺了很多。
谢谢你的回复。我继续研究一下,如有不懂,还请多多帮助。

TOP

返回列表