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

[文本处理] 批处理如何生成带百分号同时里面含有参数的字串?

如何生成带'%'同时里面含有参数的字串
比如:
有如下的字串
enum STR_GLOBAL_LIST
{
STR_GLOBAL_0 = GLOBAL_BASE,
  STR_GLOBAL_1,
  STR_GLOBAL_2,
  STR_GLOBAL_3,
  .........
}
有上百个枚举变量 现在我想弄清楚各个枚举变量在程序里代表的值.
有如下的语句 printf(" STR_GLOBAL_1 = %d ",STR_GLOBAL_1);
请教下如何根据上面的字串批处理生成这些code.

  1. gawk "/STR_GLOBAL_[0-9]+,/{gsub(/ |,/,\"\");print \"printf(\x22 \"$0\" = %d \x22,\"$0\");\"}" a.txt >b.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

谢谢支持!
我没有说清楚.我使用的是WIN xp系统,这个批处理看不明白.能否给一个WIN 平台下的批处理.
同时enum STR_GLOBAL_LIST
{
STR_GLOBAL_0 = GLOBAL_BASE,
  STR_GLOBAL_1,
  STR_GLOBAL_2,
  STR_GLOBAL_3,
  .........
}这个枚举不光是数字,,还有其他的一些字串 如STR_GLOBAL_ABORT,STR_GLOBAL_ADD,STR_GLOBAL_BACK等.

TOP

gawk是第三方命令行程序,需要先下载
http://bbs.bathome.net/thread-3981-1-1.html
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

回复 3楼 的帖子

  1. gawk "/STR_GLOBAL_[0-9a-zA-Z]+,/{gsub(/ |,/,\"\");print \"printf(\x22 \"$0\" = %d \x22,\"$0\");\"}" a.txt >b.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

STR_GLOBAL_0
STR_GLOBAL_1
STR_GLOBAL_2
STR_GLOBAL_3
STR_GLOBAL_4
STR_GLOBAL_5
STR_GLOBAL_6
STR_GLOBAL_7
STR_GLOBAL_8
STR_GLOBAL_9
STR_GLOBAL_10
STR_GLOBAL_ABORT
STR_GLOBAL_ABORTING
STR_GLOBAL_ACCEPT
STR_GLOBAL_ACCOUNTS
STR_GLOBAL_ACTIVATE
STR_GLOBAL_ACTIVATED
STR_GLOBAL_ADD
STR_GLOBAL_ADDRESS
STR_GLOBAL_ALARM
STR_GLOBAL_AS_EMAIL
STR_GLOBAL_AS_MULTIMEDIA_MSG
STR_GLOBAL_AS_TEXT_MESSAGE
STR_GLOBAL_ATTACHMENT
STR_GLOBAL_AUTHENTICATION
STR_GLOBAL_AUTOMATIC
STR_GLOBAL_BACK
STR_GLOBAL_BUSY_TRY_LATER
STR_GLOBAL_CANCEL
STR_GLOBAL_CANCELLING
STR_GLOBAL_CLEAR
STR_GLOBAL_CLOSE
STR_GLOBAL_CONFIRM
STR_GLOBAL_CONNECT
STR_GLOBAL_CONNECTING
STR_GLOBAL_CONTENT
STR_GLOBAL_CONTINUE
STR_GLOBAL_COPYING
STR_GLOBAL_CURRENTLY_NOT_AVAILABLE

我的批处理是这样的,我想只用WIN 自带的一些命令来完成.下面的"%d" 我就不知道怎么输出.请各位老大帮忙看看.
for /F "tokens=1" %%i in (a.txt) do @echo  printf("%%i = %d ",%%i);

TOP

这些枚举变量的值是C程序定义的,其代表的指可以在该C程序后面加一小段代码来输出。比如:
printf("the STR_GLOBAL_0 is:%d,STR_GLOBAL_0")

你的想法不会是要用CMD来解释C语言吧?

或者是可以这样:
  1. @echo off
  2. for /f "delims=" %%i in (a.txt) do (
  3. echo  printf("the %%i is: %d ",%%i); >>test.cpp
  4. )
复制代码
把test.cpp改为你相应的文件,然后运行那个C程序看看
努力学习,努力挣分

TOP

我的目的是将这些枚举打印出来,但是枚举太多有成百上千,如果手动输入的很困难,所以我想用批处理简单处理下,然后再将生成的东西copy到程序里面运行,
sgaizxt001 你的这个代码运行后生成的数据是
printf("the STR_GLOBAL_0 is: i); >>test.cpp
printf("the STR_GLOBAL_1 is: i); >>test.cpp
printf("the STR_GLOBAL_2 is: i); >>test.cpp
printf("the STR_GLOBAL_3 is: i); >>test.cpp
printf("the STR_GLOBAL_4 is: i); >>test.cpp
printf("the STR_GLOBAL_5 is: i); >>test.cpp
printf("the STR_GLOBAL_6 is: i); >>test.cpp
printf("the STR_GLOBAL_7 is: i); >>test.cpp
printf("the STR_GLOBAL_8 is: i); >>test.cpp
printf("the STR_GLOBAL_9 is: i); >>test.cpp
printf("the STR_GLOBAL_10 is: i); >>test.cpp

里面的%d ,和后面的枚举数据都没出来 我自己写的也是这样的. 我的解决方案是用特殊符号替代,然后在生成文件里重新替换下.
但是我觉得这样做很麻烦,所以看只用for能做出不.

[ 本帖最后由 gdts 于 2010-5-24 09:26 编辑 ]

TOP

返回列表