中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-17 03:14
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请问 如何 获取字符串的子串 查看 1,628 回复 15
楼 主 请问 如何 获取字符串的子串 发表于 2007-11-01 12:07 ·  新加坡 Verizon通讯公司UUNet互联点
初级用户
积分 98
发帖 34
注册 2007-10-16 12:24
UID 99881
性别 男
状态 离线
我用for /F "usebackq delims=:" %%i in (`date /T`) do set ddtmp=%%i:~-10%
获取 月-日-年 不成功 郁闷
这里~-10%似乎不起作用
2 发表于 2007-11-01 12:25 ·  中国 浙江 衢州 中移铁通
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
UID 99469
性别 男
状态 离线
楼主的date输出格式 是什么样子的??
3 发表于 2007-11-01 13:14 ·  中国 广东 广州 白云区 电信
高级用户
★★★
潜水修练批处理
积分 788
发帖 366
注册 2006-12-31 02:43
UID 75048
性别 男
状态 离线
试试这个


(echo+%date:~0,10%|find " ") && set "ddtmp=%date:~-10%" || set "ddtmp=%date:~0,10%"
echo+%ddtmp%
pause
正在潜水修练的批处理小白
4 发表于 2007-11-01 16:09 ·  新加坡 Verizon通讯公司UUNet互联点
初级用户
积分 98
发帖 34
注册 2007-10-16 12:24
UID 99881
性别 男
状态 离线
thur 10-31-2007
5 发表于 2007-11-01 16:10 ·  新加坡 Verizon通讯公司UUNet互联点
初级用户
积分 98
发帖 34
注册 2007-10-16 12:24
UID 99881
性别 男
状态 离线
Originally posted by dikex at 2007-11-1 13:14:
试试这个


(echo+%date:~0,10%|find " ") && set "ddtmp=%date:~-10%" || set "ddtmp=%date:~0,10%"
echo+%ddtmp%
pause


这个太复杂了。。。
你的环境不是简单的ms-dos吧 在我的dos下运行不了
%date "...."
6 发表于 2007-11-01 16:24 ·  中国 浙江 衢州 中移铁通
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
UID 99469
性别 男
状态 离线
echo %date:* =%

echo %date:~6%
7 发表于 2007-11-01 16:32 ·  新加坡 Verizon通讯公司UUNet互联点
初级用户
积分 98
发帖 34
注册 2007-10-16 12:24
UID 99881
性别 男
状态 离线
谢谢abcd

不过,我写到batch里面好像不行了。。。
for /F "usebackq delims= " %%i in (`echo %date:* =%`) do set ddtmp=%%i
感觉我原来的方法也行,可能需要一个cmd /d 命令扩展delay啥的




对了,,能否说说这是什么语法?怎么查到这样的语法讲解??
8 发表于 2007-11-01 16:37 ·  中国 浙江 衢州 中移铁通
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
UID 99469
性别 男
状态 离线
我的意思是不需要for啦,直接echo出来就行了。可以直接
%date:~6%可以直接当变量使用的。
9 发表于 2007-11-01 16:55 ·  新加坡 Verizon通讯公司UUNet互联点
初级用户
积分 98
发帖 34
注册 2007-10-16 12:24
UID 99881
性别 男
状态 离线
恩,有的console下可以,有的却显示%i ,暂时还不知道原因
10 发表于 2007-11-01 17:01 ·  中国 浙江 衢州 中移铁通
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
UID 99469
性别 男
状态 离线
用for的话

for /f "tokens=1*" %%i in ('date /t') do @echo %%j
11 发表于 2007-11-01 17:53 ·  新加坡 Verizon通讯公司UUNet互联点
初级用户
积分 98
发帖 34
注册 2007-10-16 12:24
UID 99881
性别 男
状态 离线
Originally posted by abcd at 2007-11-1 17:01:
用for的话

for /f "tokens=1*" %%i in ('date /t') do @echo %%j




这一步我也能做到
但把 echo 换成 set xx=%j:~-10%
好像就不可以了
我再try 谢谢
12 发表于 2007-11-01 18:02 ·  中国 浙江 衢州 中移铁通
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
UID 99469
性别 男
状态 离线
搞清楚

变量%%j和变量%j%是不一样的

%%j只能在for中使用,而且只能扩展,不能截取

而%j%只能截取或替换,而没有扩展
13 发表于 2007-11-01 19:06 ·  新加坡 Verizon通讯公司UUNet互联点
初级用户
积分 98
发帖 34
注册 2007-10-16 12:24
UID 99881
性别 男
状态 离线
醍醐灌顶阿!!!3x
14 发表于 2007-11-01 19:25 ·  中国 广东 广州 白云区 电信
高级用户
★★★
潜水修练批处理
积分 788
发帖 366
注册 2006-12-31 02:43
UID 75048
性别 男
状态 离线
Originally posted by biwier at 2007-11-1 04:10 PM:


这个太复杂了。。。
你的环境不是简单的ms-dos吧 在我的dos下运行不了
%date "...."


ms-dos?dos?
记得这些里面的for都没有/f参数的,所以你的不会时ms-dos;
2000、xp等里面的cmd是命令提示符不是dos,和dos有很大区别的。

而我的运行环境是xp sp2 pro;

默认的日期格式是:2007-11-01 星期四
修改日期格式为:Thu 2007-11-01

在命令行和批处理里面两种日期格式都可以通过
正在潜水修练的批处理小白
15 发表于 2007-11-01 22:35 ·  中国 上海 东方有线
初级用户
积分 110
发帖 44
注册 2007-11-01 21:56
UID 101435
性别 男
状态 离线
Originally posted by dikex at 2007-11-1 07:25 PM:


ms-dos?dos?
记得这些里面的for都没有/f参数的,所以你的不会时ms-dos;
2000、xp等里面的cmd是命令提示符不是dos,和dos有很大区别的。

而我的运 ...



我在家里的机器上测试了,你的是可以的 ,在公司的时候是写了脚本里的,在英文版os上测试的
不过你写了三个句子也太复杂了....高手考虑得太全面了^_^


Rochechild=biwier
论坛跳转: