是否可以使用批处理文件打开一个新的cmd窗口并使用新窗口作为我的实时日志?

时间:2015-10-04 03:55:55

标签: windows batch-file cmd

我创建了一个批处理文件,以帮助我为手机上的应用程序编写脚本,该脚本将自动执行触摸任务。我正在创建的脚本需要240x9行的脚本语言来完成我想要完成的任务,有没有办法打开新的cmd行并将文本输出到新窗口?

因此,例如,现在我在批处理文件中有每个选项,用于编写脚本语言所需的屏幕触摸坐标,以执行我的任务到这样的文本文件。

@ECHO :start>speedsearch.txt

是否可以将它们作为实时日志传递给新窗口,所以如果我放弃了我的位置,我可以参考日志窗口来提醒自己我在创建脚本的位置?

我知道如果我要使用常规cmd窗口。

TYPE C:\speedSearch.txt

它会打印文本文件中的内容,所以无论如何都要将命令从我的批处理脚本传递给。

TYPE C:\speedSearch.txt

每次我选择一个选项来在文件中的脚本中添加一行? 我已经在我的脚本开头使用了这个新窗口。

start "LOGGING WINDOW" C:\WINDOWS\SYSTEM32\CMD.EXE

我只需要帮助我将命令传递到新窗口,而不会中断批处理脚本中的当前会话。

1 个答案:

答案 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