要寫乙個bat指令碼,才發現bat指令碼寫起來有點「蹩腳」。 但是功能還是蠻強大的,細細看他的幫助文件,可以實現很強大的功能。
我的主要目的是判斷乙個應用程式是否已經啟動,如果沒有啟動,就啟動它。已經啟動就跳過了。
最麻煩的的地方在於不知道怎麼給bat定義變數以及給這個變數賦值,看了文件和網上的有些實現才發現,要通過for迴圈來繞著來實現。
指令碼如下:
@set process=notepad.exe
rem 使用tasklist命令來尋找程序,/fi可以指定過濾條件。
@for /f %%i in ('tasklist /nh /fi "imagename eq %process%"') do @set var=%%i
rem 這是一種方式,通過比較字串實現
@rem @if /i %var%==%process% (@echo exist) else (@echo not exit) rem compare by process name
rem 看var是否有定義過,沒有定義過說明沒有找到我們需要的程序,跳轉
@if defined var (@goto continue) else (@goto start_process)
:start_process
rem 在這裡寫啟動程序的命令
@echo exist
:continue
rem 繼續做其他事情
@echo not exist
@pause
做個記錄,以後有類似的指令碼要寫,不至於無頭緒。
可以檢視cmd的幫助文件得到更多資訊
if /?
for /?
goto /?
tasklist /?
寫到檔案裡面看比較清楚,呵呵
tasklist /?>tasklist_help.txt
bat批處理指令碼 如何允許變數迴圈賦值
在cmd控制台,執行set 可以得到解釋 新增了延遲環境變數擴充的支援。該支援總是按預設值被停用,但也可以通過 cmd.exe 的 v 命令列開關而被啟用 停用。請參閱 cmd set var before if var before set var after if var after echo ...
shell 指令碼變數賦值
簡單的變數賦值a 879 echo the value of a is a.用let賦值let a 16 5 echo the value of a is now a.read命令是系統內建命令 語法格式 read 變數1 變數2 用 read 命令 這也是一種賦值 echo n enter a r...
bat檔案設定環境變數指令碼
獲取管理員許可權 echo off 1 mshta vbscript createobject shellexecute cmd.exe c s0 runas 1 window.close exit cd d dp0 echo off wmic environment where name osg ...