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

[文件操作] 【求助】 一个应用实例 关于变量的嵌套问题 期待高手解决

我是批处理的初学者,前一段时间,我帮助我的一个同学做一个单词软件输出文本的处理。问题是这样的,NewWordBase.txt 内容如下:

+adjacent
#adj.邻近的
&əˈdʒeisənt
$3
+advocacy
#n.支持, 拥护, 鼓吹
&ˈædvəkəsi
$3
+affinity
#n.喜爱
&əˈfiniti
$3
+aka
#
&
$3
+allied
#
&
$3
+allure
#n.诱惑力, 魅力
&əˈljuə
$3
+amber
#n.琥珀(色)黄色交通信号灯
&ˈæmbə
$3
+ambiguity
#n.歧义模棱两可的意思
&ˌæmbiˈɡjuiti
$3
……
要求将前面+#&和$3 等字去掉,然后 输入格式 如下:
adjacent adj.邻近的 /əˈdʒeisənt/
advocacy n.支持, 拥护, 鼓吹 /ˈædvəkəsi/
affinity n.喜爱 /əˈfiniti/
……

我的设想是 这样 第一步 先把符号去掉 输出一个temp.txt
@echo off
setlocal enabledelayedexpansion
type Unicode > ANSI
for /F "delims=+#&$3 tokens=1" %%i in ('type NewWordBase.txt') do (
echo %%i >>temp.txt
)

在此处我非常的郁闷,因为文档是 Unicode 。for 命令不能读出 但是转化成 ANSI 后 又出现? 等 不能显示完全。期待高手给予帮助

第二步 从temp 文件中读取 各行 字符串 然后 按照 三列依次输出,但是在这里我失败了 我只能按照 标号输出
0 1 2
3 4 5
6 7 8
……
这样的话 就得不到我想要的结果
@echo off
setlocal enabledelayedexpansion
set /a n=0
for /f %%i in (temp.txt) do (
set "a!n!=%%i"
set /a n+=1
)
for /l %%i in (0,3,!n!) do (
set /a e=%%i
set /a f=!e!+1
set /a g=!e!+2
set  "h=!a!e!!"
set  "j=!a!f!!"
set  "k=!a!g!!"
echo !h! !j! !k!>>result.txt
)
type result.txt
我认为我处理这个问题的思路 可能比较复杂 但是我认为 理论上可以实现 那就是在 第二个for 中 无法将 a【i】的值 提出来 希望高手给与我解释 或是给我更好的解决方法 非常感谢

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=*" %%a in (NewWordBase.txt) do (
  4. set str=%%a
  5. if "!str:~,1!" equ "^&" (
  6. echo;!ls:~1! /!str:~,1!/
  7. set ls=
  8. ) else (
  9. if "!str!" neq "$3" set ls=!ls! !str:~1!
  10. )
  11. )
  12. pause
复制代码
操作:修改
操作者:yslyxqysl
操作理由:加code标签


[ 本帖最后由 yslyxqysl 于 2009-11-26 22:10 编辑 ]

TOP

  1. set  "h=!a!e!!"
  2. set  "j=!a!f!!"
  3. set  "k=!a!g!!"
复制代码
改为
  1. call set  "h=%%a!e!%%"
  2. call set  "j=%%a!f!%%"
  3. call set  "k=%%a!g!%%"
复制代码
可以得到结果

TOP

返回列表