rem 以下為關閉命令打印
@echo off
rem 以下為清屏
cls
rem 以下為設置此批處理所有的環境變量只應用于當前批處理
setlocal EnableDelayedExpansion
rem 以下為設置變量
set runasUsername=domain\administrator
set runasPassword=password
rem 以下%1是在此批處理執行時后面的第一個命令行參數(在執行的格式:腳本名+export 就相當于跳轉到”:export“)
if %1. == export. call :export
if %1. == import. call :import
rem 以下為退出當前腳本,不是退出整個批處理
exit /b 0
:export
rem 以下為創建一個tasks文件夾,所有的錯誤不顯示
md tasks 2>nul
rem 以下為列出所有計劃任務并指定csv格式,然后找出與字符串TaskName不匹配的行,輸出到一個文本文件
schtasks /query /fo csv | findstr /V /c:"TaskName" > tnlist.txt
rem 循環查找以(,)為分隔符列出每一行的每一項,指定%%i為第一項,用tokens=1,2指定第二項%%j和第三項%%k(也可以
rem 指定%%t為第一項,那么tokens=1,2指定第二項%%u和第三項%%v,第四項為%%W)
for /F "delims=, tokens=1,2*" %%i in (tnlist.txt) do (
echo %%i
echo %%j
echo %%k
set tn=%%i
rem 以下為設置fn為把tn的內容里的\替換成#
set fn=!tn:\=#!
echo !tn!
echo !fn!
rem 以下為列出所有計劃任務并指定xml格式,輸出到當前目錄的tasks文件夾下的XXX.xml文件
schtasks /query /xml /TN !tn! > tasks\!!.xml
)
rem 刪除所有windows自帶的計劃任務
del tasks\#Microsoft*.xml
exit /b 0
rem 以下為導入標簽,在執行的格式:腳本名+import 將會直接跳轉到這里開始執行
:import
rem 在這個目錄里循環找到所有的xml
for %%f in (tasks\*.xml) do (
rem 用call命令來調用(:importfile)標簽執行,并賦予上面查找出來的名字為參數
call :importfile "%%f"
)
exit /b 0
:importfile
rem 以下為設置filename=上面用call命令調用時賦予的第一個參數,如果是 set filename=%2則是第二個參數
set filename=%1
rem 以下為設置把filename里#字符替換為空
set taskname=%filename:#=%
rem 以下為設置把filename里tasks\字符替換為空
set taskname=%taskname:tasks\=%
rem 以下為設置把filename里.xml字符替換為空
set taskname=%taskname:.xml=%
rem 以下為用用戶名和密碼創建名字為XXX的計劃認為,以xml文件為參數
schtasks /create /ru %runasUsername% /rp %runasPassword% /tn %taskname% /xml %filename%
echo on