batch-file - 在 FOR 循环中计算
问题描述
我正在尝试为我们网络中的所有机器设置计划任务。所以它们的开始时间并不相同,我编辑 XML 文件以使用随机时间。更改 XML 工作正常,但只要我在它周围放置一个 For 循环以使用 servers.txt,我就会收到一条错误消息:“此时 +10 是意外的。”
@echo off
for /F "tokens=*" %%i in (servers.txt) do (
set file=original.xml
set insertline=9
SET /a uur=(%RANDOM%*6/32768)+10
SET /a minuut=(%RANDOM%*50/32768)+10
set output=output.XLM
(for /f "tokens=1* delims=[]" %%a in ('find /n /v "##" ^< "%file%"') do (
if "%%~a"=="%insertline%" (
echo ^<StartBoundary^>2018-12-17T%uur%:%minuut%:43.9766025^<^/StartBoundary^>
REM ECHO.%%b
) ELSE (
echo.%%b
)
)) > %output%
SchTasks /Create /S \\%%i /RU username /RP password /XML output.XLM /TN task_name
)
解决方案
命令中的右括号过早set
关闭循环。for
这里有两种可能的方法来克服它:
SET /a "uur=(%RANDOM%*6/32768)+10"
SET /a minuut=(%RANDOM%*50/32768^)+10
第一个)
通过将整个分配括在引号中来保护 ,第二个将)
( 用插入符号^
) 转义。(您应该在整个脚本中始终使用其中一种可能性 - 我推荐第一种(带引号))
另一个失败:%RANDOM%
每次在命令块中都会给你相同的值(使用延迟扩展来克服它。
稍后在脚本中,您会遇到与变量相同的file
问题insertline
。所以也从%file%
和%insertline%
到!file!
和!insertline!
。
推荐阅读
- wordpress - 如何根据用户国家/地区将 WordPress 帖子设为私有
- sonarqube - 通过声纳扫描仪发布时,Sonarqbue 中不会显示代码覆盖率
- python - SKLearn LinearRegression 预测结果是否取决于列顺序?
- flutter - flutter - if then else - 变量仅本地化
- r - 问题在ggplot中为x轴分配标签
- python - 如何在json嵌套python中按值查找索引
- python - django 显示类别的子类别
- python - paho mqtt:尝试连接到代理但无法订阅时的结果代码 5
- string - 将哪个字符附加到后缀数组中的字符串?
- javascript - 如何打印使用 jquery 动态生成的 HTML 页面