一直使用批处理文件备份文件,以前使用RAR压缩的时候,可以使用-ag参数,以当前日期与时间生成压缩文件名,但换用7z以后,没有这个功能,每次备份完之后都要手工修改文件名,很不方便。现在从http://blog.joycode.com/mvm/archive/2005/05/10/50624.aspx找到了在批处理文件中根据当前时间生成一个变量,然后截取它的一个子字符串的方法,然后就可以在命令中使用这个变量了。
批处理中可以用%date%调用当前时间,但%date:~0,4%则可以生成当前时间(转换成字符串以后)从第0位起取4个字符的子字符串,第一位从0计。其中0、4位置的数字还可以是负值,应该是代表了从字符串末尾、向前取字符。现在我的批处理中可以使用如下命令了:
7za a backup.%date:~0,4%%date:~5,2%%date:~8,2%.7z -r * -ms=off -mmt=on
这样就能每天生成一个名如backup.20050630.7z的文件了。
有人还说,利用下面的命令也可以取出当前时间,试了一下,是可以echo出来,但如何加以利用就不知道了。
for /f "tokens=1,2,3 delims=- " %a in (‘date /t’) do @echo "%a-%b-%c"
上面这个命令中,date /t必须用单引号包含,双引号不行。
不知道这样取substring的方法对其它变量是否适用。
Related posts
使用使用cvs2svn转换Repository的时候,发现转换过来的更新记录中,所有的中文都是乱码,不是显示方块,就是问号,原来是没有加上–encoding参数的缘故,原来使用的命令如下:
c:/python23/python h:/cvs2svn-1.2.1/cvs2svn -s h:/svn/repo h:/cvsroot/repo
–encoding参数的含义是“所采用的编码,默认为ascii”,但我加上这个参数“–encoding=gb2312”之后,转换却出了问题,提示
LookupError: unknown encoding: gb2312
原来cvs2svn在转换的时候使用 的是Python的字符集,而Python
2.3好像不支持gb2312字符集,因此更新到Python
2.4.1并使用如下命令进行转换
c:/python24/python h:/cvs2svn-1.2.1/cvs2svn –encoding=gb2312 -s h:/svn/repo h:/cvsroot/repo
就一切正常了,转换很顺利,更新记录中的中文也没有乱码。
这里有Python 2.4支持的所有字符集列表。
Related posts
SVN服务器也建好了,Tortoisesvn客户端也安装好了,下面就可以开始使用SVN了。通过cvs2svn转过来的Repository可以直接用,但如果要新建一个Repository,导入现有的项目,就要稍微麻烦一些了,甚至有些绕,大致步骤如下:
- 在服务端的SVN parent目录下,建立一个空的repository,可以使用svnadmin create –fs-type fsfs MyNewRepository命令,也可以使用Tortoisesvn的TortoiseSVN->Create Repository Here …命令。
- 在客户端建立一个repo目录,并且在下面建三个空目录,分别是branches、tags、trunk,其中branches用来保存分支,tags用来保存标签(?不知道这个叫法是否正确),trunk用来保存当前工作状态的文件。这个目录结构也可以采用其它方式建立,详细的说明在TortoiseSVN的帮助的“5.2. Importing Data Into A Repository
”中有更详细的解释。
- 使用TortoiseSVN客户端工具,把repo目录Import(导入)到服务端,服务端地址为domain.com/svnparentpath/MyNewRepository。这样我们就建立了这个Repository的目录层次。Revision编号为0。
- 删除repo目录下的三个空目录,把要导入的项目文件拷贝到这个目录下,当然也可以直接使用其它的目录。
- 使用TortoiseSVN客户端工具,把repo目录下的内容(已有项目文件)Import(导入)到服务端,和上次导入不同的是,上次是建立目录结构,而这次是导入项目文件,因此服务端地址为domain.com/svnparentpath/MyNewRepository/trunk,注意最后多了个trunk,也就是说现在导入的内容是作为工作状态的文件存在的,以后才可以根据需要在这个基础上建立tags或branches。
- checkout服务端的domain.com/svnparentpath/MyNewRepository/trunk到某个目录,我们就可以开始工作了。
在这里有一个比较绕圈的概念,那就是SVN的branches和tags是用“copy”的方式建立的,给用户的感觉就是拷贝了一个副本,所以我们分别建立了三个目录来保存他们,而日常的工作都在trunk下进行。而在CVS中,branches和tags都是附加在现有文件之上的,你的文件只“保存”一份,至少感觉上是这样的。
Related posts
前几天发现Mozilla 1.7.1登录Discuz!论坛丢失身份的问题,虽然解决了,但一直没有找到原因,今天登录一个网站,它居然提示我禁用了COOKIE,无法登录。可我根本就没有禁用COOKIE嘛,在Mozilla中把这个网站的所有COOKIE都删除,就能够正常登录了,原来浏览器对COOKIE的总长度和数量都有限制,达到限制以后,要么顶掉最旧的,要么禁止写入COOKIE,这也是我的Mozilla丢失身份的真正原因了。
对COOKIE的限制和浏览器有关,不同的浏览器可能不一样,有空我会查一下他们各自的限制。
Related posts
我的Apache上同时挂有SVN和rewrite module,SVN配置都没有问题,通过HTTP访问正常,但通过Toroisesvn客户端访问总是不行,错误信息如下:
Error: PROPFIND request failed on ‘/svn/svntest’
Error: PROPFIND of ‘/svn/svntest’: 302 Found (http://www.domain.com)
经查,如果我去掉Apache的httpd.conf中的这两句,就可以正常使用了:
RewriteRule (.+)\/(\w+[^\/])$ $1/$2/ [R]
RewriteRule \/(\w+[^\/])$ /$1/ [R]
这两句RewriteRule是为了添加URL地址末尾的斜杠的,看来这两句对SVN的调用起了影响,原因大概是访问SVN的地址,比如是“/svn/svntest”时,RewriteRule会将其改写为“/svn/svntest/”,多了一个斜杠,然后SVN就不知所综了。
原来Apache 2.0的mod-dir已经有了自动添加斜杠的功能:
A "trailing slash" redirect is issued when the server
receives a request for a URL
http://servername/foo/dirname where
dirname is a directory. Directories require a
trailing slash, so mod_dir issues a redirect to
http://servername/foo/dirname/.
不用劳烦RewriteRule了。
话又说回来,不管是mod_dir也好,RewriteRule也好,使用反向代理(ProxyPass)的时候还是有些问题,比如说,domain1.com/d2地址贝配置为转向到domain2.com,那么访问地址domain1.com/d2/subdir时,如果subdir时确实存在的,而输入地址的时候最后又没有输入斜杠/,那么你将会得到一个404错误页面,并且地址栏显示的是domain1.com/subdir,这个问题遇到很久了,一直不知道如何解决。通过端口进行反向代理好像同样存在这样的问题。
所以,使用反向代理时,一是老老实实的加上斜杠,二就是最好尽量采用如下的反向代理方式:domain1.com/subdir1定向到domain2.com/subdir2,并且subdir1和subdir2同名,这样就不会出现上面说到的问题了。
Related posts