批处理建立日期文件夹(批处理中字符串的编辑处理【set变量变种】【%date:~0,4%】)

  • 内容
  • 评论
  • 相关

总是因为偷懒,所以才会有自动化的东西产生,因为网站更新的需要,每天都要建立跟日期有关的文件夹,所以查了一下批处理命令,得出可以这样做:

如果不存在就创建今天日期的文件夹
if not exist %date:~0,10% (md %date:~0,10%)

但是效果与自己的设想稍有差别,因为之前建立的格式为:YYYYMMDD的格式,而这种建立的格式为YYYY-MM-DD

所以再查了一下这个"%date:~0,10%"究竟是什么东东,终于找到了以下这篇文章,并顺便改了一下:

地址:http://hi.baidu.com/878044022/blog/item/0fc6085812f64ad69d8204f5.html

批处理中字符串的编辑处理【set变量变种】【%date:~0,4%】
2009-06-10 17:35

@echo off
@title 字符串的编辑测试(下面描述用的箭头→ ← 分别表示向右、向左的意思)
set aa=1234567890
echo 说明:下面复合变量中,逗号前的数字表示指针偏移量,逗号后的数字表示提取的字符长度
echo %aa:~1,5%      //指针向右→偏移1位,然后从指针处开始向右→提取5个字符.
echo %aa:~0,-3%    //指针不偏移,→提取所有字符,并除去最后3个字符.
echo %aa:~5%        //单个数字,不指定长度值.表示指针→偏移5个字符,然后,→提取所有字符.
echo %aa:~-5%      //单个负值,特例,表示指针反方向偏移,从最右端起,←偏移5位,然后从指针处开始→提取所有字符.也可以简单理解为提取字符串末尾5个字符.

echo 指针反方向偏移的情况.既是从字符串最右端起自右向左偏移.←

echo %aa:~-2,1%   //偏移量取负值,表示指针从最右端起,向左←偏移2位,然后从指针处开始向右→提取1个字符,生成新的变量值.注意字符串末尾的空格,因为空格也将作为"透明字符"提取到变量中去,切记要去掉变量末尾的空格.ctrl+A即可快速方便的检查该变量字符串末端是否含有空格.
echo %aa:~-4,3%   //最右端起,指针←偏移4位,然后→提取3个字符.
echo %aa:~-4,-2% //从最右端起,指针←偏移4位,然后从指针处开始,→提取所有字符,并去除最后2个字符.

echo 应用
echo %date:~0,10%      //提取年月日信息
echo %date:~-3%         //提取星期几信息
echo %time:~0,5%         //提取时间中的时和分
echo %time:~0,-3%       //提取时和分和秒信息
pause

小结:
1、偏移量为正值时,表示指针向右移动;为负值时,表示指针从字符串最右端起向左移动.
2、如果长度值为正,表示向右提取若干个字符;如果为负,表示向右提取所有字符,并去除若干个字符."若干个=长度值的绝对值。"提取字符的方向总是自左向右进行的.
3、如果为单个数字,那么这个数字表示的是偏移量,长度值取默认值,既是字符串的"余数",也就是从指针处开始,向右方向的所有字符.如果这个数字是负数,可以简单的理解为:提取字符串末尾的若干个字符.(正确的解释应该是:表示指针反方向偏移,从最右端起,←偏移若干位,然后从指针处开始→提取所有字符)
■ %date%和%time%是系统内置的日期变量和时间变量。

最终自己改的结果:

set dd=%date:~0,4%%date:~5,2%%date:~8,2%
if not exist %dd% (md %dd%)

评论

0条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据