windows - 批号变量 setter

标签 windows batch-file

我需要有关我正在处理的批处理文件的帮助,

基本上,每次它执行一项任务时,它都应该将变量 %number% 加一个,这一切正常,然后再次重复执行不同的任务,直到完成。

这是它用来重复的代码

我基本上需要一种设置方式:

set svn=%svn%%number%
set svnlink=%svnlink%%number%
set svnfolder=%svnfolder%%number%

我正在使用:

if %number%==1 (
set svn=%svn1%
set svnlink=%svnlink1%
set svnfolder=%svnfolder1%)
if %number%==2 (
set svn=%svn2%
set svnlink=%svnlink2%
set svnfolder=%svnfolder2%)
if %number%==3 (
set svn=%svn3%
set svnlink=%svnlink3%
set svnfolder=%svnfolder3%)

当它达到 20+ 时我真的需要缩短它

这可能吗?如果你能帮助我,谢谢!

最佳答案

使用临时批处理文件。这可能不优雅,但它有效:

set svn1=First text
set svn2=Second text

REM This echos the first text
set number=1
echo echo %%svn%number%%% > a.bat
call a

REM This echos the second text
set number=2
echo echo %%svn%number%%% > a.bat
call a

if exist a.bat del a.bat

但要注意:要找出 % 的数量和顺序会变得相当困难。在这里使用。在示例中,%%svn%number%%%转换为 %svn[actual value X of variable number]%并将其转换为 svnX 的实际值a.bat 内部.

所以你的实际代码应该是这样的:

REM Note that number has to be set here already!
echo set svn=%%svn%number%%% > a.bat
echo set svnlink=%%svnlink%number%%% >> a.bat
echo set svnfolder=%%svnfolder%number%%% >> a.bat
call a.bat

这也可以用作子程序:

set number=1
set returnmark=mark1
goto setvars
:mark1

set number=45
set returnmark=mark2
goto setvars
:mark2

goto end

:setvars
echo set svn=%%svn%number%%% > a.bat
echo set svnlink=%%svnlink%number%%% >> a.bat
echo set svnfolder=%%svnfolder%number%%% >> a.bat
call a.bat
goto %returnmark%

:end

关于windows - 批号变量 setter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2999414/

相关文章:

batch-file - 在批处理文件的 for 循环中转义括号

python - 从 Python 脚本启动 VirtualBox VM

c# - 将 Batch shell 脚本输出读入 C# .Net 程序

c++ - 主对话框在命令消息处理程序返回之前销毁

windows - 如何从 Windows 批处理文件中的 ECHO 字符串中去除引号?

Windows 命令行和批处理文件 : potential problems with unescaped special characters in filenames?

windows - 批处理文件由于某种原因在参数之间添加空格

php - 如何使用 Windows 任务计划程序运行 PHP 脚本

c# - Windows 服务 DbResource Provider

batch-file - 批处理,回显变量中的整行