您如何测试 window(按标题)是否已从命令提示符打开?
How do you test if a window (by title) is already open from the command prompt?
在批处理文件中,我打开了一个 window,具体名称如下:
@echo off
start "my log" /D \logs\ /I powershell -nologo -noexit -command "$host.ui.RawUI.WindowTitle = 'My log'"; get-content logfile.log -wait
所以 window 标题是 "My log"。
只有当 window 尚未打开时,您如何 运行 此命令。是否有一个 bat 文件命令来测试这个?我宁愿不使用程序或 powershell 命令,如果可能的话,只使用一个简单的 bat 文件 cmd。
像这样:
@echo off
if EXISTS window("My log") goto skip
start "my log" /D \logs\ /I powershell -nologo -noexit -command "$host.ui.RawUI.WindowTitle = 'My log'"; get-content logfile.log -wait
:skip
@For /f "Delims=:" %A in ('tasklist /v /fi "WINDOWTITLE eq New Folder"') do @if %A==INFO echo Prog not running
有关批处理的更多信息。另见 for /?
.
& seperates commands on a line.
&& executes this command only if previous command's errorlevel is 0.
|| (not used above) executes this command only if previous command's errorlevel is NOT 0
> output to a file
>> append output to a file
< input from a file
| output of one command into the input of another command
^ escapes any of the above, including itself, if needed to be passed to a program
" parameters with spaces must be enclosed in quotes
+ used with copy to concatinate files. E.G. copy file1+file2 newfile
, used with copy to indicate missing parameters. This updates the files modified date. E.G. copy /b file1,,
%variablename% a inbuilt or user set environmental variable
!variablename! a user set environmental variable expanded at execution time, turned with SelLocal EnableDelayedExpansion command
%<number> (%1) the nth command line parameter passed to a batch file. %0 is the batchfile's name.
%* (%*) the entire command line.
%<a letter> or %%<a letter> (%A or %%A) the variable in a for loop. Single % sign at command prompt and double % sign in a batch file.
.
--
总是使用任务列表,这里是一个例子:
@echo off
for /f "tokens=*" %%a in ('tasklist /fi "WINDOWTITLE eq My log"') do if "%%a" == "INFO: No tasks are running which match the specified criteria." start "my log" /D \logs\ /I powershell -nologo -noexit -command "$host.ui.RawUI.WindowTitle = 'My log'"; get-content logfile.log -wait
没错,你只需要 2 行就可以做到。
在批处理文件中,我打开了一个 window,具体名称如下:
@echo off
start "my log" /D \logs\ /I powershell -nologo -noexit -command "$host.ui.RawUI.WindowTitle = 'My log'"; get-content logfile.log -wait
所以 window 标题是 "My log"。
只有当 window 尚未打开时,您如何 运行 此命令。是否有一个 bat 文件命令来测试这个?我宁愿不使用程序或 powershell 命令,如果可能的话,只使用一个简单的 bat 文件 cmd。
像这样:
@echo off
if EXISTS window("My log") goto skip
start "my log" /D \logs\ /I powershell -nologo -noexit -command "$host.ui.RawUI.WindowTitle = 'My log'"; get-content logfile.log -wait
:skip
@For /f "Delims=:" %A in ('tasklist /v /fi "WINDOWTITLE eq New Folder"') do @if %A==INFO echo Prog not running
有关批处理的更多信息。另见 for /?
.
& seperates commands on a line.
&& executes this command only if previous command's errorlevel is 0.
|| (not used above) executes this command only if previous command's errorlevel is NOT 0
> output to a file
>> append output to a file
< input from a file
| output of one command into the input of another command
^ escapes any of the above, including itself, if needed to be passed to a program
" parameters with spaces must be enclosed in quotes
+ used with copy to concatinate files. E.G. copy file1+file2 newfile
, used with copy to indicate missing parameters. This updates the files modified date. E.G. copy /b file1,,
%variablename% a inbuilt or user set environmental variable
!variablename! a user set environmental variable expanded at execution time, turned with SelLocal EnableDelayedExpansion command
%<number> (%1) the nth command line parameter passed to a batch file. %0 is the batchfile's name.
%* (%*) the entire command line.
%<a letter> or %%<a letter> (%A or %%A) the variable in a for loop. Single % sign at command prompt and double % sign in a batch file.
.
--
总是使用任务列表,这里是一个例子:
@echo off
for /f "tokens=*" %%a in ('tasklist /fi "WINDOWTITLE eq My log"') do if "%%a" == "INFO: No tasks are running which match the specified criteria." start "my log" /D \logs\ /I powershell -nologo -noexit -command "$host.ui.RawUI.WindowTitle = 'My log'"; get-content logfile.log -wait
没错,你只需要 2 行就可以做到。