首先,Stack Overflow 上有一些类似的问题,例如:
然而,我的用例有点特殊(或者说:我无法通过之前论坛条目中学到的经验来解决我的问题 - 请注意,我是一个 Batch 文件的纯初学者)。
我想做的是从某个路径中获取一个文件,该路径包括一些子文件夹(其名称会更改) - 并将其复制到具有类似文件夹结构的另一个路径中。
我目前卡在这一点上,我不知道如何在源路径中设置多个通配符,因为它由几个变化的部分组成。例如:
基本上只有带数字的部分可以更改,因此我尝试了以下操作:
我很确定我的代码第二行有错误 - 因为我不知道是否可以像这样设置多个通配符。
控制台对第二行的输出是:
我不理解这是什么意思以及我应该怎么做。
我想做的是从某个路径中获取一个文件,该路径包括一些子文件夹(其名称会更改) - 并将其复制到具有类似文件夹结构的另一个路径中。
我目前卡在这一点上,我不知道如何在源路径中设置多个通配符,因为它由几个变化的部分组成。例如:
源文件:
C:\20170621_Update2017SR1\Polarion_update\_backup-20170627-1602.05\polarion\plugins\com.polarion.alm.tracker_3.17.0\configuration\MyPolarion\page.xml
目标目录:
C:\Polarion\polarion\plugins\com.polarion.alm.tracker_3.18.2\configuration\My Polarion
基本上只有带数字的部分可以更改,因此我尝试了以下操作:
for /D %%a in ("C:\Polarion\polarion\plugins\com.polarion.alm.tracker*") do set "com.polarion.alm.tracker=%%a"
for /D %%b in ("C:\*_Update*\Polarion_update\_backup-*\polarion\plugins\com.polarion.alm.tracker*") do set "folder=%%b"
echo %com.polarion.alm.tracker%
echo %folder%
set source="%folder%\configuration\MyPolarion\page.xml"
set destination="%com.polarion.alm.tracker%\configuration\My Polarion"
xcopy /s /Y %source% %destination%
我很确定我的代码第二行有错误 - 因为我不知道是否可以像这样设置多个通配符。
控制台对第二行的输出是:
Echo is on
我不理解这是什么意思以及我应该怎么做。
Echo is on
表示您的批处理文件试图执行echo
,但后面没有任何内容。这意味着%com.polarion.alm.tracker%
是空的。 - Pieter MantelD:\some_dir\*_name
可以工作,但D:\some_*\dir_name
则不行。因此,每个带通配符的目录层级都需要单独解析:for /D %J in ("D:\some_*") do for /D %I in ("%~J\*_name") do echo Resolved two directory levels: "%~I"
(在批处理文件中将%
符号翻倍)。 - aschipfl