- 帖子
- 136
- 积分
- 552
- 技术
- 2
- 捐助
- 0
- 注册时间
- 2008-8-2
|
4楼
发表于 2009-7-14 21:19
| 只看该作者
在其他论坛找到答案,贴出来和大家分享代码,原帖地址:http://bbs.verybat.org/viewthread.php?tid=15726&highlight=%2BWingl83
wxcute:
批处理改下就行
@echo off
cd/d %~dp1
set y=%date:~0,4%
set m=%date:~5,2%
set d=%date:~8,2%
mkdir "%y%-%m%-%d%"
Wingl83 :
成功了,谢谢斑竹
另:请问cd/d %~dp1的作用是什么?还有,在其他的批处理看到的cd/d "%~dp0"又是什么意思呢?还有没有其他例如%~dp2、%~dp3之类的?
denev2004 :
dp0是bat所在的目录. .
dp1就不清楚了
wxcute :
%0 ~ %9 是 10 个可变参数,也是原始表示方法。
%~0,%~f0,%~dp0 等全是其扩展用法。详细参阅:CALL /? 帮助说明。
当然这里的 0 可以是 1 - 9 中的任意一个,只是含义不同而已。
%0 一般表示批自身,
上面例子中 %1 表示的意义说起来比较复杂(实际是不太好说明,可在批处理中添加 echo %1 查看),而 %~dp1 这个扩展用法就是表示正在使用右键的当前目录(即要新建 *.date 文件所在的目录)。
添加 echo %1 查看将一目了然。
Wingl83 :
原版和我修改的两个都是从右键调用的啊,为什么我修改过的就不行?
wxcute :
原版是右击目录,控制台会先进入被右击目录所在的目录下,再寻找 md.bat 来运行。
所以 .reg 文件可简化(即参数 %1 无需使用):
[HKEY_CLASSES_ROOT\Directory\shell\newdayfolder\command]
@="md.bat"
改后是点击了右键中 “新建” 下的 “日期目录” 子菜单,%1 指的即是这个特殊 ”文件“ 的完整路径,即 "%当前目录%\新建 日期目录.date"。
此时的控制台并不进入这个文件所在目录,因此我们用 cd/d %~dp1 来跳转到当前目录。再建立新目录。
当然可以省略代码,改成:md "%~dp1\%date:~,10%",(如果日期格式为:2009-02-04)
Wingl83 :
明白了,非常感谢!!
[ 本帖最后由 Wingl83 于 2009-7-14 21:21 编辑 ] |
|