【发布时间】:2016-09-22 14:07:23
【问题描述】:
出于有趣的原因,我编写了一个批处理文件,在我点击的任何位置输入 100 个随机的大写/小写字母。由于这变得很慢,我决定从命令行启动它,用一个简单的 for 循环在更短的时间内获得更多字符:
for /L %m in (1,1,3) do (start bat.bat) 在文件所在的文件夹中启动 shell。
好奇我是否真的得到了 300 个字符,我去了this website,它实时显示了书面字符并得出了一个有趣的观察结果:我只得到了 293 个字母(+- 5 个左右),而不是预期的 300 个。我认为这是因为并行运行的进程。您甚至可以看到写作以 3 个字符的块开始,然后突然缺少一两个字符,并且在整个脚本持续时间中持续。
现在的问题是:同一个批处理文件的并行运行会影响彼此的进程吗?
下面是文件的代码(是的,我知道它可能做得更短更高效):
@if (@CodeSection == @Batch) @then
@echo off
Setlocal EnableDelayedExpansion
timeout /t 3
set SendKeys=CScript //nologo //E:JScript "%~f0"
for /L %%G in (1,1,100) do (
set /a grkl=!random! %%2
if "x!grkl!"=="x0" (
!SendKeys! "z"
) ELSE (
!SendKeys! "Z"
)
)
exit
@end
// JScript section
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys(WScript.Arguments(0));
【问题讨论】:
标签: batch-file for-loop parallel-processing