中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请问 如何 获取字符串的子串
« [1] [2] »
作者:
标题: 请问 如何 获取字符串的子串 上一主题 | 下一主题
biwier
初级用户





积分 98
发帖 34
注册 2007-10-16
状态 离线
『楼 主』:  请问 如何 获取字符串的子串

我用for /F "usebackq delims=:" %%i in (`date /T`) do set ddtmp=%%i:~-10%
获取 月-日-年 不成功 郁闷
这里~-10%似乎不起作用

2007-11-1 12:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 2 楼』:  

楼主的date输出格式  是什么样子的??

2007-11-1 12:25
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 3 楼』:  

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




正在潜水修练的批处理小白
2007-11-1 13:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
biwier
初级用户





积分 98
发帖 34
注册 2007-10-16
状态 离线
『第 4 楼』:  

thur  10-31-2007

2007-11-1 16:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
biwier
初级用户





积分 98
发帖 34
注册 2007-10-16
状态 离线
『第 5 楼』:  



  Quote:
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  "...."

2007-11-1 16:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 6 楼』:  

echo %date:* =%

echo %date:~6%

2007-11-1 16:24
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
biwier
初级用户





积分 98
发帖 34
注册 2007-10-16
状态 离线
『第 7 楼』:  

谢谢abcd

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




对了,,能否说说这是什么语法?怎么查到这样的语法讲解??

2007-11-1 16:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 8 楼』:  

我的意思是不需要for啦,直接echo出来就行了。可以直接
%date:~6%可以直接当变量使用的。

2007-11-1 16:37
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
biwier
初级用户





积分 98
发帖 34
注册 2007-10-16
状态 离线
『第 9 楼』:  

恩,有的console下可以,有的却显示%i  ,暂时还不知道原因

2007-11-1 16:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 10 楼』:  

用for的话

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

2007-11-1 17:01
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
biwier
初级用户





积分 98
发帖 34
注册 2007-10-16
状态 离线
『第 11 楼』:  



  Quote:
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 谢谢

2007-11-1 17:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 12 楼』:  

搞清楚

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

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

而%j%只能截取或替换,而没有扩展

2007-11-1 18:02
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
biwier
初级用户





积分 98
发帖 34
注册 2007-10-16
状态 离线
『第 13 楼』:  

醍醐灌顶阿!!!3x

2007-11-1 19:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 14 楼』:  



  Quote:
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

在命令行和批处理里面两种日期格式都可以通过



正在潜水修练的批处理小白
2007-11-1 19:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
RocheChild
初级用户





积分 110
发帖 44
注册 2007-11-1
状态 离线
『第 15 楼』:  



  Quote:
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

2007-11-1 22:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: