无法在任务计划程序的批处理脚本中获取系统环境变量的值
Can't get value of system environment variable in batch script for task scheduler
我正在尝试为任务计划程序设置批处理脚本以执行 svn 存储库的增量转储。为此,我想在系统环境变量中保存 repo 的最新版本,以便下次执行脚本,如下所示:
@setlocal
@echo off
:: Get value from last execution
set LAST_REV=%SVN_LAST_BACKUP_REV%
set /a OLDEST=%LAST_REV%+1
for /F "tokens=*" %%g in ('svnlook youngest %REPO_DIR%') do (SET YOUNGEST=%%g)
svnadmin dump repo -r %OLDEST%:%YOUNGEST% --incremental > backup/repo.dump
:: Save youngest rev for next execution
setx SVN_LAST_BACKUP_REV %YOUNGEST%
不知何故 %SVN_LAST_BACKUP_REV%
未定义(我添加了一行 if not defined SVN_LAST_BACKUP_REV echo sadface
),即使使用 setx
设置一个值确实有效,并且当我手动检查时它确实显示了一个值在系统属性中。
我错过了什么?
这是我使用 Notepad++ 的方式的错误:
右键单击带有批处理文档的选项卡,您可以选择“在 cmd 中打开包含文件夹”,这就是我尝试调试上述代码的方式:
我不知道以这种方式从 Notepad++ 关闭 cmd 并重新打开 cmd 不会更改它的上下文,因此环境变量仍然不可见。
这在我重新启动 Notepad++ 时得到解决,现在我知道我需要(重新)打开 cmd 以获取新会话的通常方式。
我正在尝试为任务计划程序设置批处理脚本以执行 svn 存储库的增量转储。为此,我想在系统环境变量中保存 repo 的最新版本,以便下次执行脚本,如下所示:
@setlocal
@echo off
:: Get value from last execution
set LAST_REV=%SVN_LAST_BACKUP_REV%
set /a OLDEST=%LAST_REV%+1
for /F "tokens=*" %%g in ('svnlook youngest %REPO_DIR%') do (SET YOUNGEST=%%g)
svnadmin dump repo -r %OLDEST%:%YOUNGEST% --incremental > backup/repo.dump
:: Save youngest rev for next execution
setx SVN_LAST_BACKUP_REV %YOUNGEST%
不知何故 %SVN_LAST_BACKUP_REV%
未定义(我添加了一行 if not defined SVN_LAST_BACKUP_REV echo sadface
),即使使用 setx
设置一个值确实有效,并且当我手动检查时它确实显示了一个值在系统属性中。
我错过了什么?
这是我使用 Notepad++ 的方式的错误: 右键单击带有批处理文档的选项卡,您可以选择“在 cmd 中打开包含文件夹”,这就是我尝试调试上述代码的方式:
我不知道以这种方式从 Notepad++ 关闭 cmd 并重新打开 cmd 不会更改它的上下文,因此环境变量仍然不可见。 这在我重新启动 Notepad++ 时得到解决,现在我知道我需要(重新)打开 cmd 以获取新会话的通常方式。