我试图运行这样的事情:
tasklist /s 192.168.0.0 >> tasklist.log && tasklist /s 192.168.1.1 >> tasklist.log
从名为tasklist.bat
的脚本中,它会抛出多个错误:
The process cannot access the file because it is being used by another process.
不应该&&
等待上一个命令在执行之前完成?我该如何解决这个问题?
不确定这是否有帮助,但这是完整的脚本:
echo Server1 >> tasklist.log
echo ------------------- >> tasklist.log
tasklist /s 192.168.1.1 >> tasklist.log && tasklist /s 192.168.1.2 >> tasklist.log && tasklist /s 192.168.1.3 >> tasklist.log
echo ------------------- >> tasklist.log
此外,当我看到命令提示文字时,我注意到了这个额外的1
:
tasklist /s 192.168.1.1 1>>tlog.log
与>>有关的事情任务列表正在生成" 1"在日志中。
以下是日志:
C:\Users\username\Desktop>tasklist /s 192.168.1.1 1>>tlog.log
C:\Users\username\Desktop>tasklist /s 192.168.1.1 1>>tlog.log
C:\Users\username\Desktop>tasklist /s 192.168.1.1 1>>tlog.log
答案 0 :(得分:2)
我建议你这样使用它:
(
echo Server1
echo -------------------
tasklist /s 192.168.1.1 && tasklist /s 192.168.1.2 && tasklist /s 192.168.1.3
echo -------------------
) > tasklist.log
答案 1 :(得分:1)
经过一些实验,即使出现错误,任务列表总是会返回退出代码0(成功),因此使用&&用它。你可以将它分成多行。你应该看看当你这样做时是否会再次出现问题。
echo Server1 >> tasklist.log
echo ------------------- >> tasklist.log
tasklist /s 192.168.1.1 >> tasklist.log
tasklist /s 192.168.1.2 >> tasklist.log
tasklist /s 192.168.1.3 >> tasklist.log
echo ------------------- >> tasklist.log
另外,当我看到命令提示文本
时,我注意到这个额外的1
1指的是stdout流。默认情况下,每个进程都有三个流打开:stdin(0,控制台输入),stdout(1,正常程序输出),stderr(2,错误消息输出)。如果未在输出重定向中指定流,则默认为1。
答案 2 :(得分:1)
显然你有一个正在执行的TASKLIST.BAT脚本而不是所需的外部TASKLIST.EXE命令。重命名批处理脚本以解决问题。