batch file,通配符在folderpath中,不知道通配符是什么

我有一个batch file,试图replace中的文件

C:\Users\All Users\Symantec\Symantec Endpoint Protection\12.*\Data\Config 

但是,这个*因计算机而异,所以不是我可以有一个input列表

该batch file在另一个batch file中执行,该文件从命令行调用。

这里是带*path的batch file, C:\ script.bat

 @echo off if exist "C:\Users\All Users\Symantec\Symantec Endpoint Protection\12.*\Data\Config\SyLink.xm_" del /Q "C:\Users\All Users\Symantec\Symantec Endpoint Protection\12.*\Data\Config\SyLink.xm_" ren "C:\Users\All Users\Symantec\Symantec Endpoint Protection\12.*\Data\Config\SyLink.xml" sylink.xm_bak del /Q "C:\Users\All Users\Symantec\Symantec Endpoint Protection\12.*\Data\Config\SyLink.xml" echo. echo Copying new SyLink.xml echo. copy C:\SyLink.xml "C:\Users\All Users\Symantec\Symantec Endpoint Protection\12.*\Data\Config" echo. echo Deleting temp files del /Q "c:\SyLink.xml" 

这是另一个batch file, C:\ copy.bat ,它调用第一个文件,即C:\ script.bat

 xcopy C:\sylink.xml \\10.10.10.10\c$ xcopy C:\sylink.xml \\10.10.10.11\c$ D:\pstools\psexec.exe @C:\clients.txt -c C:\Script.bat 

C:\ clients.txt

 10.10.10.10 10.10.10.11 

batch file是通过命令行执行的

 C:\> C:\copy.bat 

问题是,我如何使这个batch file工作,以便识别*作为通配符?

谢谢

 for /d %%a in ( "C:\Users\All Users\Symantec\Symantec Endpoint Protection\12.*" ) do set "theFolder=%%~fa\Data\Config" echo %theFolder% 

您只能在路径的最后一个元素中包含通配符。

要做你所需要的,你必须枚举12.*文件夹并选择一个。 在这种情况下,选择匹配通配符的最后一个文件夹(随着do子句中的代码被执行,变量被覆盖)

尝试这个:

 @echo off For /D %%D in ("C:\Users\All Users\Symantec\Symantec Endpoint Protection\12.*") Do ( Set "Dir=%%~fD\Data\Config" ) If exist "%Dir%\SyLink.xm_" Del /q %Dir%\SyLink.xm_" Ren "%Dir%\SyLink.xml" sylink.xm_bak Del /q "%Dir%\SyLink.xml" echo. echo Copying new SyLink.xml echo. copy C:\SyLink.xml "%Dir%" echo. echo Deleting temp files Del /q "c:\SyLink.xml" 

/ D开关找到文件夹。

%%〜fD从文件夹获取完整路径。