批处理参数不正确
Batch parameter not getting correct
用户输入参数未设置到 checkoutdir
变量中。
@echo off
echo.
echo. [ SVN Updater ]
setlocal enableDelayedExpansion
set SOURCE=E:\SvncheckoutMAY2016\
set SVN=C:\Program Files\TortoiseSVN\bin
set SVN_REPO_URL=https://192.168.1.35:8443/svn/
set projects=JPO/JPOMobile/branches/2016-05-18 JPO/JPOWEB/branches/20160518
(for %%i in (%projects%) do (
echo. Going to repository - %%i
echo. Please provide checkoutdir name
set /p checkoutdir=
echo. Checking out %SVN_REPO_URL%%%i from SVN...
"%SVN%\TortoiseProc.exe" /command:checkout /path:"%SOURCE%%checkoutdir%" /url:"%SVN_REPO_URL%%%i" /closeonend:2
)
)
echo.
echo. Operation complete.
问题:
checkoutdir
设置为项目目录名称
对于第一个迭代,它被设置为 2016-05-18
,结果是 E:\SvncheckoutMAY201616-05-18
中的路径。对于第二次迭代,它设置为 20160518
,结果为 E:\SvncheckoutMAY2016160518
中的路径
它worked.I不得不将%checkoutdir%
改为!checkoutdir!
此代码应该有效:
@echo off
echo.
echo. [ SVN Updater ]
setlocal EnableDelayedExpansion
set "SOURCE=E:\SvncheckoutMAY2016\"
set "SVN=%ProgramFiles%\TortoiseSVN\bin"
set "SVN_REPO_URL=https://192.168.1.35:8443/svn/"
set "projects=JPO/JPOMobile/branches/2016-05-18 JPO/JPOWEB/branches/20160518"
for %%i in (%projects%) do (
echo. Going to repository - %%i
echo. Please provide checkoutdir name
set /p "checkoutdir=Directory name: "
echo. Checking out %SVN_REPO_URL%%%i from SVN...
"%SVN%\TortoiseProc.exe" /command:checkout /path:"%SOURCE%!checkoutdir!" /url:"%SVN_REPO_URL%%%i" /closeonend:2
)
echo.
echo. Operation complete.
endlocal
启用延迟扩展后,必须使用感叹号而不是百分号来引用延迟扩展的变量。
打开命令提示符 window、运行 set /?
并读取所有输出页面。
用百分号引用的环境变量总是在解析命令行时扩展,分别用 (
... )
.
定义的命令块
用户输入参数未设置到 checkoutdir
变量中。
@echo off
echo.
echo. [ SVN Updater ]
setlocal enableDelayedExpansion
set SOURCE=E:\SvncheckoutMAY2016\
set SVN=C:\Program Files\TortoiseSVN\bin
set SVN_REPO_URL=https://192.168.1.35:8443/svn/
set projects=JPO/JPOMobile/branches/2016-05-18 JPO/JPOWEB/branches/20160518
(for %%i in (%projects%) do (
echo. Going to repository - %%i
echo. Please provide checkoutdir name
set /p checkoutdir=
echo. Checking out %SVN_REPO_URL%%%i from SVN...
"%SVN%\TortoiseProc.exe" /command:checkout /path:"%SOURCE%%checkoutdir%" /url:"%SVN_REPO_URL%%%i" /closeonend:2
)
)
echo.
echo. Operation complete.
问题:
checkoutdir
设置为项目目录名称
对于第一个迭代,它被设置为 2016-05-18
,结果是 E:\SvncheckoutMAY201616-05-18
中的路径。对于第二次迭代,它设置为 20160518
,结果为 E:\SvncheckoutMAY2016160518
它worked.I不得不将%checkoutdir%
改为!checkoutdir!
此代码应该有效:
@echo off
echo.
echo. [ SVN Updater ]
setlocal EnableDelayedExpansion
set "SOURCE=E:\SvncheckoutMAY2016\"
set "SVN=%ProgramFiles%\TortoiseSVN\bin"
set "SVN_REPO_URL=https://192.168.1.35:8443/svn/"
set "projects=JPO/JPOMobile/branches/2016-05-18 JPO/JPOWEB/branches/20160518"
for %%i in (%projects%) do (
echo. Going to repository - %%i
echo. Please provide checkoutdir name
set /p "checkoutdir=Directory name: "
echo. Checking out %SVN_REPO_URL%%%i from SVN...
"%SVN%\TortoiseProc.exe" /command:checkout /path:"%SOURCE%!checkoutdir!" /url:"%SVN_REPO_URL%%%i" /closeonend:2
)
echo.
echo. Operation complete.
endlocal
启用延迟扩展后,必须使用感叹号而不是百分号来引用延迟扩展的变量。
打开命令提示符 window、运行 set /?
并读取所有输出页面。
用百分号引用的环境变量总是在解析命令行时扩展,分别用 (
... )
.