通过批处理导入当前目录中的所有schtasks .xml文件

时间:2017-07-13 11:31:54

标签: xml batch-file scheduled-tasks

我知道可以导入多个这样的任务:

schtasks.exe /create /TN "Task 1 Name" /XML "Full_Path_of_Backup_XML_File"
schtasks.exe /create /TN "Task 2 Name" /XML "Full_Path_of_Backup_XML_File"
schtasks.exe /create /TN "Task 3 Name" /XML "Full_Path_of_Backup_XML_File"

但我更喜欢以更动态的方式导入当前目录中的所有schtasks .xml文件。很像this批处理(.xml而不是.reg):

rem @echo off
cls
SET folder=%~dp0
for %%i in ("%folder%*.reg") do (regedit /s "%%i")
echo done
pause
EXIT

有人能引导我走向正确的方向吗? :)

1 个答案:

答案 0 :(得分:0)

您是否想要遍历与批处理文件脚本位于同一目录中的每个XML文件?然后使用找到的每个XML文件创建计划任务?如果是这种情况,你可以尝试这样的事情(假设XML文件有效创建计划任务):

@echo off

setlocal enabledelayedexpansion

for %%e in ("%~dp0*.xml") do (
  set /a "count+=1"
  schtasks /create /tn "Task !count! Name" /xml "%%~e"
)

如果您需要能够将包含感叹号的XML文件名传递给schtasks命令行工具,请改用以下代码:

@echo off

setlocal disabledelayedexpansion
set "count=1"

for %%e in ("%~dp0*.xml") do (
  set "file=%%~e"
  setlocal enabledelayedexpansion
  schtasks /create /tn "Task !count! Name" /xml "!file!"
  endlocal & set /a "count+=1"
)
  

还有一个问题,如何将任务命名为.xml文件名?

这实际上会简化一些事情,因为在执行期间不需要在for循环体内扩展单独的变量:

@echo off

setlocal disabledelayedexpansion

for %%e in ("%~dp0*.xml") do (
  schtasks /create /tn "%%~ne" /xml "%%~e"
)