我创建了一个批处理文件,以帮助我为手机上的应用程序编写脚本,该脚本将自动执行触摸任务。我正在创建的脚本需要240x9行的脚本语言来完成我想要完成的任务,有没有办法打开新的cmd行并将文本输出到新窗口?
因此,例如,现在我在批处理文件中有每个选项,用于编写脚本语言所需的屏幕触摸坐标,以执行我的任务到这样的文本文件。
@ECHO :start>speedsearch.txt
是否可以将它们作为实时日志传递给新窗口,所以如果我放弃了我的位置,我可以参考日志窗口来提醒自己我在创建脚本的位置?
我知道如果我要使用常规cmd窗口。
TYPE C:\speedSearch.txt
它会打印文本文件中的内容,所以无论如何都要将命令从我的批处理脚本传递给。
TYPE C:\speedSearch.txt
每次我选择一个选项来在文件中的脚本中添加一行? 我已经在我的脚本开头使用了这个新窗口。
start "LOGGING WINDOW" C:\WINDOWS\SYSTEM32\CMD.EXE
我只需要帮助我将命令传递到新窗口,而不会中断批处理脚本中的当前会话。
答案 0 :(得分:2)
此问题与同步有关。有几种方法可以在批处理文件中启动两个或多个执行线程,并且存在几种标准方法来解决通常的同步问题。这种情况的不同之处在于第二个线程是通过start
命令启动的,因此无法重定向其标准输入。在第二个线程中准确检测文件末尾的唯一方法是插入指示该点的特定行;在下面的代码中,":EOF" string用于此目的。
@echo off
setlocal EnableDelayedExpansion
if "%~1" neq "" goto %1
echo :start> speedsearch.txt
rem Run View Log code simultaneously with Main code
start "View Log" "%~NX0" ViewLog
:Main
set "line="
set /P "line=Enter next line: "
if not defined line goto endMain
echo %line%>> speedsearch.txt
goto Main
:endMain
rem Send the "end of file" mark
echo :EOF>> speedsearch.txt
echo File complete
goto :EOF
:ViewLog
set i=0
call :Update < speedsearch.txt
goto :EOF
:Update
set "line="
set /P "line="
if "!line!" equ ":EOF" goto :EOF
if defined line (
set /A i+=1
echo !i!- !line!
)
goto :Update