Board logo

标题: [文本处理] [已解决]使用for /f引号分隔提取字符输出结果不正确 [打印本页]

作者: pZjVa0    时间: 2013-6-30 01:27     标题: [已解决]使用for /f引号分隔提取字符输出结果不正确

本帖最后由 pZjVa0 于 2013-6-30 08:38 编辑

我今晚测试了一晚还是无法理解为什么这段代码为什么最后的输出结果是文本中的第一行而不是第二行
(for /f skip^=1^ tokens^=2^ delims^=^" %%a in (CDImage.cue) do set a=%%a&&break)
echo %a%

但是改成下面goto的代码结果就正常,除了goto的代码之外还有其他办法可以实现我的想法吗?谢谢各位
(for /f skip^=1^ tokens^=2^ delims^=^" %%a in (CDImage.cue) do set a=%%i&&goto:a)
:a
echo 内容是:%a%
pause
作者: terse    时间: 2013-6-30 02:42

临时过渡
  1. @echo off
  2. more +1 e.txt>$.t
  3. set/pa=<$.t
  4. for /f tokens^=2^ delims^=^" %%a in ("%a%") do set a=%%a
  5. del $.t
  6. echo %a%
  7. pause
复制代码
判断定义
  1. set a=
  2. (for /f skip^=1^ tokens^=2^ delims^=^" %%a in (e.txt) do if not defined a set a=%%a)
  3. echo 内容是:%a%
  4. pause
复制代码

作者: CrLf    时间: 2013-6-30 03:03

bat 中的 break 命令是无作用的,是从 DOS 时代遗留下来的,在现在的 cmd 中已经只是个“保留名”了,以下摘自 break /?
这个命令是为了与 DOS 系统的兼容而保留的,在 Windows 里不起作用。

作者: pZjVa0    时间: 2013-6-30 08:38

感谢楼上两位




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2