Board logo

标题: [文件操作] 为什么在cmd下正常运行的代码以批处理文件方式执行则报错? [打印本页]

作者: 向不乐    时间: 2016-5-10 10:08     标题: 为什么在cmd下正常运行的代码以批处理文件方式执行则报错?

本帖最后由 pcl_test 于 2016-5-10 19:49 编辑

Svn备份脚本,如下:(迅速弹了了一下cmd窗口就什么都没了)
@echo off
Rem 基本变量设置
set repodir=H:\Repositories\customerManage
set bakdir=H:\SVN_BAKUP\customerManage
set dt=%date:~0,4%%date:~5,2%%date:~8,2%.%time:~0,2%%time:~3,2%%time:~6,2%
set last=1

Rem 第一次执行的时候last_version.txt是不存在的。当它存在时,last等于last_version。
if exist H:\SVN_BAKUP\customerManage\last_version.txt for /f %i in (last_version.txt) do (set last=%i)

Rem 查看最新版本号,并令now等于最新版本号
svnlook youngest %repodir% > last_version.txt
for /f %i in (last_version.txt) do (set now=%i)

Rem svn命令,备份last和now之间的版本到指定的目录
svnadmin dump %repodir% -r %last%:%now% --incremental > %bakdir%\%last%_%now%_%dt%
作者: flyinnet9    时间: 2016-5-10 11:31

for /f %%i in (last_version.txt) do (set now=%%i)
作者: gawk    时间: 2016-5-10 11:32

  1. @echo off
  2. Rem 基本变量设置
  3. set repodir=H:\Repositories\customerManage
  4. set bakdir=H:\SVN_BAKUP\customerManage
  5. set dt=%date:~0,4%%date:~5,2%%date:~8,2%.%time:~0,2%%time:~3,2%%time:~6,2%
  6. set last=1
  7. Rem 第一次执行的时候last_version.txt是不存在的。当它存在时,last等于last_version。
  8. if exist H:\SVN_BAKUP\customerManage\last_version.txt for /f %i in (last_version.txt) do (set last=%i)
  9. Rem 查看最新版本号,并令now等于最新版本号
  10. svnlook youngest %repodir% > last_version.txt
  11. for /f %%i in (last_version.txt) do (set now=%%i)
  12. Rem svn命令,备份last和now之间的版本到指定的目录
  13. svnadmin dump %repodir% -r %last%:%now% --incremental > %bakdir%\%last%_%now%_%dt%
复制代码
bat里面需要把%i改成%%i

如果还是有问题:
代码保存为test.bat
在CMD窗口中执行test.bat
把报错信息发出来看看
作者: 向不乐    时间: 2016-5-10 15:08

回复 3# gawk
谢啦,果然是!好坑!
作者: 向不乐    时间: 2016-5-10 15:08

回复 2# flyinnet9
谢谢,太坑啦!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2