【发布时间】:2019-10-02 13:46:21
【问题描述】:
我有以下脚本(基于this answer),它允许使用文件名作为任务名从当前文件夹导入所有任务计划程序任务:
@echo off
setlocal disabledelayedexpansion
for %%e in ("%~dp0*") do (
schtasks /create /tn "%%~ne" /xml "%%~e"
)
我需要以某种方式对其进行修改,以便它还可以在所有子文件夹(所有级别)中查找文件并相应地创建任务。例如。如果批处理与名为“Dummy1”、“Dummy2”、“Dummy3”的任务文件一起位于某个文件夹中,则任务应导入为“Dummy1”、“Dummy2”、“Dummy3”。如果包含批处理文件的文件夹中还包含名为“Dummy1”、“Dummy2”的任务的子文件夹“Subby1”,则这些任务应导入为“Subby1\Dummy1”、“Subby1\Dummy2”。如果包含批处理文件的文件夹包含名为“Dummy1”、“Dummy2”的任务的子文件夹“Subby1\Sub-Subby”,则这些任务应导入为“Subby1\Sub-Subby\Dummy1”、“Subby1\Sub- Subby\Dummy2"等
我还想让它忽略批处理文件本身,但不排除 .bat 扩展名。
我试过这个,但我不擅长批处理脚本,所以显然它不起作用,我什至不明白为什么:
for %%e in ("%~I") do (
schtasks /create /tn "%%~I\%%~ne" /xml "%%~e"
)
至于排除批处理文件,我不知道该怎么做。
【问题讨论】:
-
我需要一个脚本来处理与批处理文件位于同一文件夹中的文件(不包括批处理文件本身)以及所有级别的所有子文件夹中的所有文件(并使用相同的文件夹结构)。我不知道你所说的可执行文件是什么意思。
-
作为基础:
for /R "%~dp0." %%e in (*.*) do ( ... )? -
@aschipfl 之后如何引用子文件夹名称?因此它会导入具有相应文件夹结构的文件。
-
for /R "%~dp0." in (*.*) do ( schtasks /create /tn "%%~fe\%%~ne" /xml "%%~e" )脚本在启动时关闭。 -
不是双击,而是通过打开命令提示符窗口并键入脚本路径/名称来运行批处理文件,然后您可以阅读 amy 返回的错误。请注意,
%%~fe返回完整的绝对路径...
标签: batch-file