Board logo

标题: 请问 如何 获取字符串的子串 [打印本页]

作者: biwier     时间: 2007-11-1 12:07    标题: 请问 如何 获取字符串的子串

我用for /F "usebackq delims=:" %%i in (`date /T`) do set ddtmp=%%i:~-10%
获取 月-日-年 不成功 郁闷
这里~-10%似乎不起作用
作者: abcd     时间: 2007-11-1 12:25
楼主的date输出格式  是什么样子的??
作者: dikex     时间: 2007-11-1 13:14
试试这个
(echo+%date:~0,10%|find " ") && set "ddtmp=%date:~-10%" || set "ddtmp=%date:~0,10%"
echo+%ddtmp%
pause

作者: biwier     时间: 2007-11-1 16:09
thur  10-31-2007
作者: biwier     时间: 2007-11-1 16:10


  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  "...."
作者: abcd     时间: 2007-11-1 16:24
echo %date:* =%

echo %date:~6%
作者: biwier     时间: 2007-11-1 16:32
谢谢abcd

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




对了,,能否说说这是什么语法?怎么查到这样的语法讲解??
作者: abcd     时间: 2007-11-1 16:37
我的意思是不需要for啦,直接echo出来就行了。可以直接
%date:~6%可以直接当变量使用的。
作者: biwier     时间: 2007-11-1 16:55
恩,有的console下可以,有的却显示%i  ,暂时还不知道原因
作者: abcd     时间: 2007-11-1 17:01
用for的话

for /f "tokens=1*" %%i in ('date /t') do @echo %%j
作者: biwier     时间: 2007-11-1 17:53


  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 谢谢
作者: abcd     时间: 2007-11-1 18:02
搞清楚

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

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

而%j%只能截取或替换,而没有扩展
作者: biwier     时间: 2007-11-1 19:06
醍醐灌顶阿!!!3x
作者: dikex     时间: 2007-11-1 19:25


  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

在命令行和批处理里面两种日期格式都可以通过
作者: RocheChild     时间: 2007-11-1 22:35


  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
作者: terse     时间: 2007-11-2 00:04
@echo off
for /f %%i in ('date /t') do echo %%i
pause>nul
我这里得到 2007-11-01

[ Last edited by terse on 2007-11-2 at 12:09 AM ]