批处理 – 用多个文件types循环

我正在尝试制作一个batch file来转换某些文件types。 所以我不会在代码中放置更多无用的循环,我想把它放在一个循环中。

这是我的代码到目前为止:

cd "%inputdir%" setlocal disableDelayedExpansion for /f "delims=" %%A in ('forfiles /s /m *.tga /c "cmd /c echo @relpath"') do ( set "file=%%~A" setlocal enableDelayedExpansion set filenametmp=%outputdir%!file:~1,-4!.paa setlocal enableDelayedExpansion For %%A in ("!filenametmp!") do ( Set foldertmp=%%~dpA ) setlocal enableDelayedExpansion IF NOT EXIST "!foldertmp!" ( mkdir "!foldertmp!" ) endlocal cd !Convertfolder! Pal2PacE %inputdir%!file:~1! !filenametmp! ) 

我用这个答案来改进for循环:

 for /f "delims=" %%A in ('for %%G in (.tga, .png) do 'forfiles /s /m *%%G /c "cmd /c echo @relpath"'') do (... 

不幸的是,它抛出这个错误:

 System cannot find file for %G in... 

有谁知道如何解决这个问题?

Solutions Collecting From Web of "批处理 – 用多个文件types循环"

如果我的理解正确,我认为这个代码将做你想要的。

 for %%G in (.tga, .png) do ( for /f "delims=" %%A in ('forfiles /s /m *%%G /c "cmd /c echo @relpath"') do ( REM The ECHO below is just for testing. REM Put the code from inside your FOR loop here. ECHO %%A ) ) 

我相信,但没有测试:

为/ f“delims =”%% A in('for %% G in(.tga,.png)do forfiles / s / m * %% G / c“cmd / c echo @relpath”')do(。 ..

应该工作,并且围绕forfiles命令的引用正在混淆这个问题。