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