這個隨筆涉及到幾個批處理指令碼得知識點。
windows的start命令, 啟動另乙個視窗執行指定的程式或命令。
windows的call命令, 從批處理程式呼叫另乙個程式, 直到被呼叫程式退出, 再繼續原先的批處理程式
引數: windows, %0為shell 本身, %1為第1個引數, 以此類推
linux, $0為shell 本身, $1為第1個引數, 以此類推
返回值: windows:當乙個命令完成後, 可以使用 %errorlevel% , 獲得 exit code
linux: 可以使用$?得到上個命令的exit code
永久環境變數:
windows, 在作業系統環境變數中設定的變數
linux: 在profile檔案中, 使用export命令定義的變數
臨時環境變數:
windows, 在前乙個bat中使用 set 命令設定了乙個環境變數, 後面的bat檔案就可直接使用該環境變數
linux, 在前乙個script使用=號設定了乙個環境變數, 後面的script檔案拿不到該變數值, 除非使用export命令, 也即是說=設定的環境變數作用域是local的, export設定的變數時global的.
windows是不區分local變數和global變數的做法, 會pollute變數的. 為此windows 引入了 setlocal 和 endlocal命令, 在這兩個命令直接set的變數即為local變數, 否則就是global變數.
下面是乙個 windows 示例, 啟動python程式, 中間涉及到pythonpath環境變數, 我採用了 setlocal 方式, 避免汙染os的pythonpath環境變數.
rem --- batch file: fron_profile.bat
set my_python=c:pythonenvpython27_flaskscriptspython.exe
set package_parent_path=d:trunkcronanywheresrc
set pythonpath=%package_parent_path%
rem --- batch file: fron_importfromcrontab.bat
setlocal
call fron_profile.bat
endlocal
rem --- batch file: fron_timeoutmonitor.bat
setlocal
call fron_profile.bat
%my_python% %package_parent_path%frondeamonfron_timeoutmonitor.py
endlocal
Windows下使用bat批處理檔案實現程序守護
今天有個東西,想做個程序守護,保持持續連線,本來想用processlasso,但是人家是收費的,並且是做程序管理的。無奈,只能找找其他解決方案。發現bat也可以實現程序守護,找了找,找到了乙個 windows下bat批處理實現守護程序 有日誌 jack meng 寫得非常全,但是我不需要日誌的功能,...
Windows下備份網路檔案批處理檔案
set now date 6,4 date 0,2 date 3,2 set a ye now 1 xcopy 10.122.1.18 d micros database data backup archive f daily micros s i p d date 0,2 date 3,2 dat...
使用批處理檔案
字尾是bat的檔案就是批處理檔案,是一種文字檔案。簡單的說,它的作用就是自動的連續執行多條命令,批處理檔案的內容就是一條一條的命令。那它有什麼用呢?比如,在啟痺ps軟體時,每次都必須執行 c cd wps c wps spdos c wps py c wps wbx c wps wps 如果每次用w...