批量从路径中获取子字符串

问题描述 投票:0回答:1

所以我想使用批处理脚本自动将任务导入到任务计划程序中。这个想法是迭代给定目录中的 xml 文件并将它们一一导入。现在我的脚本看起来像这样:

@echo on

setlocal disabledelayedexpansion

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

pause

我遇到的问题是此脚本中的 /tn 标志,因为“%%~dpne”返回 xml 文件的完整路径(不带扩展名),例如: C:\Windows\System32\Tasks\Microsoft\Pent\Projects\DF\TASK_DAILY 我只需要这部分“Pent\Projects\DF\TASK_DAILY”。我怎样才能提取这个子字符串?干杯。

windows batch-file
1个回答
0
投票

我发现你使用

disabledelayedexpansion
很奇怪,因为这是默认条件。也许我们遇到过因启用延迟扩展而导致过度种植的情况......

由于

~dpne
的计算结果与没有文件名的
~dp0
相同,因此您可以使用

set "mypath=%~dp0"
set "mypath=%mypath:*microsoft\=%"
for %%e in ("%~dp0*.xml") do (
schtasks /create /tn "%mypath%%%~ne" /ru "System" /xml "%%~e")

使用第二个

set
将第一次出现
microsoft\
(不区分大小写)之前的所有字符替换为 nothing,并使用
mypath
的结果值。

注意:未经测试

© www.soinside.com 2019 - 2024. All rights reserved.