中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-11 10:44
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教:纯 DOS 下带有空格的字符串处理问题 查看 996 回复 9
楼 主 请教:纯 DOS 下带有空格的字符串处理问题 发表于 2009-02-19 11:40 ·  中国 广东 东莞 电信
新手上路
积分 7
发帖 4
注册 2006-12-31 09:26
19年会员
UID 75090
性别 男
状态 离线
有这么一个字符串

"abcdefg1234 efdafda"

不包含"",中间是若干个空格

请问在纯 DOS 下有办法取到 abcdefg1234 吗?

[ Last edited by jmlvww on 2009-2-19 at 11:42 ]
2 发表于 2009-02-19 12:02 ·  中国 浙江 温州 龙湾区 电信
初级用户
★★
积分 58
发帖 60
注册 2009-02-18 12:48
17年会员
UID 139163
性别 男
状态 离线
@echo off
for /f "tokens=1,2 delims= " %%i IN (a.txt) DO @echo %%i%%j > b.txt

这样可以吗? 将字串保存为a.txt 输出为b.txt

小弟还很菜,学习来了
3 发表于 2009-02-19 12:38 ·  中国 广东 东莞 电信
新手上路
积分 7
发帖 4
注册 2006-12-31 09:26
19年会员
UID 75090
性别 男
状态 离线
for /f "tokens=1,2 delims= " %%i IN (a.txt) DO @echo %%i%%j > b.txt

Syntax error,纯 DOS 下比较不好处理。
4 发表于 2009-02-19 17:17 ·  美国 华盛顿州 金 雷德蒙德 Microsoft
初级用户
★★
积分 100
发帖 93
注册 2009-01-14 15:04
17年会员
UID 136661
性别 男
来自 湖南
状态 离线
楼上那句肯定是%%i这个位置有语法错误,仔细看看cmd提供的帮助, 在文件里面参数要写为%%i, 但是如果实在命令行执行的时候就使用:%i

PS: 关于取字符串的问题,可以参考 for /?, 学好for,这问题就容易了.论坛有很多学习贴,搜索以下.

[ Last edited by zhengqian529 on 2009-2-19 at 17:18 ]
5 发表于 2009-02-19 17:30 ·  中国 广东 江门 电信
中级用户
★★
积分 256
发帖 124
注册 2007-12-18 16:41
18年会员
UID 106049
性别 男
状态 离线
Originally posted by zhengqian529 at 2009-2-19 17:17:
楼上那句肯定是%%i这个位置有语法错误,仔细看看cmd提供的帮助, 在文件里面参数要写为%%i, 但是如果实在命令行执行的时候就使用:%i

PS: 关于取字符 ...

楼主要求是“纯DOS”,在纯DOS中执行2楼的命令必定会报错
6 发表于 2009-02-19 17:36 ·  美国 华盛顿州 金 雷德蒙德 Microsoft
初级用户
★★
积分 100
发帖 93
注册 2009-01-14 15:04
17年会员
UID 136661
性别 男
来自 湖南
状态 离线
哦.http://www.cn-dos.net/forum/viewthread.php?tid=30980 这个帖子提到使用第三方软件strings,不知道对楼主有帮助不?

纯dos下提取日期时间
http://www.cn-dos.net/forum/viewthread.php?tid=45389&fpage=1&highlight=%E7%BA%AFdos

[ Last edited by zhengqian529 on 2009-2-19 at 17:40 ]
7 发表于 2009-02-19 18:08 ·  中国 广东 东莞 电信
新手上路
积分 7
发帖 4
注册 2006-12-31 09:26
19年会员
UID 75090
性别 男
状态 离线
strings 试过了,思路是用 find 查找连续几个空格,然后从第一个字符开始取。

问题是 strings 不支持查找字符为空格的。
8 发表于 2009-02-19 22:23 ·  中国 安徽 马鞍山 联通
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
用nset处理,搜索一下就行了。
Windows 一键还原
http://www.yjhy.com
9 发表于 2009-02-20 00:10 ·  中国 上海 杨浦区 电信
金牌会员
★★★★
积分 4,639
发帖 2,239
注册 2005-01-30 00:00
21年会员
UID 35785
性别 男
状态 离线
4DOS 的一个 @word 变量函数就解决了

@word[0,abcdefg1234 efdafda]
10 发表于 2009-02-21 12:25 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
如果内容已经在变量str,那好办:
写一个bbb.bat,内容如下:
set str1=%1
set str2=%2


执行:
call bbb.bat %str%


如果串在a.txt的第一行,也有个办法:
1.用debug 写一个只有一行内容(不能换行)的aaa.bat,内容(不带引号):"bbb "
2.编辑一个bbb.bat,内容为:
set str1=%1
set str2=%2

执行:
type a.txt>>aaa.bat
call aaa
则得到变量:
str1=abcdefg1234
str2=efdafda
精简
=> 个人网志
论坛跳转: