0

嗨,提前感谢,

我是开发批处理文件的新手,但我现在正在尝试编写一个 bat 文件,它将创建并写入一个 ldif 文件。我从简单的第一件事开始。我还需要对这个过程进行计时,因为它可能会变得更加复杂,并且我可能需要稍后进行软件比较(例如稍后的 bat 与 java)。

现在我只得到了这个:

@ echo "LDIF Generator"
@ echo off
:: *** Enter the file here "within the double quotes"
set fileName="test.ldif"
:: *** If file exists, then erase all previous content
::if exist %fileName% ECHO Erase the file >%fileName%

echo Hello>%fileName%
echo Created LDIF File %fileName%


set /a sum = 0
for /L %%A in (1,1,5) do (
    echo %%A>>%fileName%  set a/ sum =  "%sum% + %%A"
)
echo sum is %sum%
pause

我目前正在尝试弄清楚如何将一些数字相加并计算该过程的时间。

到目前为止,它给了我这个输出:

Hello
1  set a/ sum =  0 + 1
2  set a/ sum =  0 + 2
3  set a/ sum =  0 + 3
4  set a/ sum =  0 + 4
5  set a/ sum =  0 + 5

而在 cmd 总和是“0”

我正在尝试显示当前的迭代总和并在最后回显最终总和以及执行此操作所需的时间。

4

3 回答 3

2
@ECHO OFF &SETLOCAL
set /a sum = 0
for /L %%A in (1,1,5) do (
    set /a sum+=%%A
)
echo sum is %sum%


sum is 15
于 2013-07-10T22:46:17.193 回答
1

批量计算时间是一件很头疼的事。检查此问题的答案以了解不同的方法,从批处理脚本到外部工具。我个人更喜欢 PowerShell Measure-Commandcmdlet。

于 2013-07-10T22:57:10.827 回答
0

使用 Endoro 的代码或类似的东西。那更简单。但作为解释......要使用像你这样的代码,你需要启用elayedexpansion并使用!而不是 FOR 或 IF 构造中的 % 来指定您要使用变量 sum 的运行时值而不是加载时值。

setlocal enabledelayedexpansion
set /a sum = 0
for /L %%A in (1,1,5) do (
    echo %%A>>%fileName%  set a/ sum =  "!sum! + %%A"
)
echo sum is %sum%
endlocal
于 2013-07-11T07:05:25.430 回答