我有一个批处理文件,它从具有多个记录的 csv 文件中获取输入,并不断更新网站中的数据。我的脚本的代码是:
@if (@CodeSection == @Batch) @then
@echo off
setlocal enabledelayedexpansion
set var1=0
for /F "tokens=1-2* delims=," %%a in (pwd.csv) do (
set var2=0
set array[!var1!][!var2!]=%%a
set /a var3=var2+1
set array[!var1!][!var3!]=%%b
)
echo %array[0][0]% : %array[0][1]%
echo
set /a var1+=1
set SendKeys=CScript //nologo //E:JScript "%~F0"
START msedge "https://fams.abc.com/data.faces"
%SendKeys% "%array[0][0]%"
timeout /t 2
%SendKeys% "{TAB}"
%SendKeys% "%array[0][1]%"
%SendKeys% "{ENTER}"
的内容pwd.csv
文件是:
111, aaaa
222, bbbb
333, cccc
444, dddd
我希望这个批处理文件逐一上传所有这些记录,但它只获取最后一条记录(444, dddd
)。我的代码有什么问题?
问题的解决办法是
- 要执行的任务应该在循环内。
2.延迟变量通过!var!引用而不是 %var% 以避免“延迟扩展陷阱”
正确的代码是
@if (@CodeSection == @Batch) @then
@echo off
setlocal enabledelayedexpansion
set var1=0
for /F "tokens=1-2* delims=," %%a in (pwd.csv) do (
set var2=0
set array[!var1!][!var2!]=%%a
set /a var3=var2+1
set array[!var1!][!var3!]=%%b
echo %array[0][0]% : %array[0][1]%
echo
set /a var1+=1
set SendKeys=CScript //nologo //E:JScript "%~F0"
START msedge "https://fams.abc.com/data.faces"
!SendKeys! "%array[0][0]%"
timeout /t 2
!SendKeys! "{TAB}"
!SendKeys! "%array[0][1]%"
!SendKeys! "{ENTER}"
)
pause
goto :EOF
@end
// JScript section
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys(WScript.Arguments(0));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)