[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] 批处理怎样把截取的日期变量中的数值连起来?

  1. set year=%date:~0,4%
  2. set month=%date:~5,2%
  3. set day=%date:~8,2%
  4. set tm1=%year%%month%%day%
  5. set tm2=20100101
复制代码
这其中的 tm1=%year%%month%%day%  在DOS里是 2010 01 09
怎么连不起来呀..那位兄弟帮忙看下.

补充

  1. set year=%date:~0,4%
  2. set month=%date:~5,2%
  3. set day=%date:~8,2%
  4. set tm1=%year%%month%%day%
  5. set tm2=20100109
  6. if %tm1%==%tm2% goto ct
  7. md c:\22
  8. PAUSE
复制代码
我想把数值等于20100109   而不是2010 01 09  
谢谢

TOP

  1. set "year=%date:~0,4%"
  2. set "month=%date:~5,2%"
  3. set "day=%date:~8,2%"
  4. set "tm1=%year%%month%%day%"
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

是在纯dos里面操作吗
如果是在windows的 cmd里面,我这样做
set dt=%date:~0,10%
set dt=%dt:-=%

[ 本帖最后由 523066680 于 2010-1-9 22:10 编辑 ]

TOP

是纯DOS下,

我是为了前台POS机的一问题针对设定的,麻烦兄弟们啦

TOP

我在在纯DOS下的定时

我在在纯DOS下的定时设置
到底是怎样改呢.

TOP

3楼的代码跟你的代码相比有哪些不同?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

纯DOS下总是说语法错误

没什么不同,,但例如下面的句子,我在WINDOS中可以使用,但在纯DOS下总是说语法错误..郁闷..
  1. set tm1=%date:~0,10%
  2. if %tm1%==2010-01-11 goto ct
  3. md c:\22
  4. PAUSE
  5. :ct
  6. md c:\ct
复制代码

TOP

回复 8楼 的帖子

你在Windows里面分别运行顶楼的代码,和3楼的代码,结果是一样的?结果都是用空格分开的?能否把结果贴出来看看?

DOS里面的set命令是不支持的字符串截取的,报语法错误很正常,这有啥好郁闷的?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

我的主要意要还是想在纯DOS下进行一个定时设置,如果SET不能,那到底怎样才行呢...不好意思,我对批处理初学乍练,但是最近又急用.静不下心来看资料,,麻烦各位啦.

TOP

“在DOS里是 2010 01 09”
这是不可能的
正如Batcher所说
“DOS里面的set命令是不支持的字符串截取的”
DOS甚至是没有预置变量%date%的
出来这个结果就证明你的环境不是纯DOS

怀疑你的POS机是Windows
只不过可能区域不对
所以日期字符串格式不对
使if 后面出现空格或非法字符
导致语法出错

你在你的所谓DOS环境下
echo %date%
看一下结果是什么就知道了

另外记住
使用if的时候别忘了加上引号或其它防空字符
if “%tm1%”==“2010-01-11” goto ct
这样可以避免语法错导致程序终止

TOP

回复 11楼 的帖子

我的猜测:顶楼的代码是在Windows中执行的,有空格是因为每行set命令都是以空格结尾的,这也是我在3楼贴代码的原因^_^
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 10楼 的帖子

DOS里面获取系统日期、时间是个比较复杂的事情,如果静不下心来,那就麻烦了。

参考:DOS系统中获取并分解系统日期时间的批处理
http://www.bathome.net/thread-6969-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

原帖由 Batcher 于 2010-1-12 15:11 发表
我的猜测:顶楼的代码是在Windows中执行的,有空格是因为每行set命令都是以空格结尾的,这也是我在3楼贴代码的原因^_^


不是猜测,是事实。鼠标一拖就看出来啦。。。

批处理一个字符都不能错啊。。。

看来 set "name=value" 加引号是个好习惯,以前一直。。。因为怕了“引号”~~~

TOP

判定定时执行
和将日期分段获取没有必然的联系
楼主把问题想的复杂了

DOS和Windows下的思路是截然不同的
如果真的是DOS
可以试试
  1. echo.|date|find "2010-01-12">nul
  2. if not errorlevel 1 goto ct
复制代码

TOP

返回列表