繁体   English   中英

批处理-Forfiles循环使用多种文件类型

[英]Batch - Forfiles in loop with multiple 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...

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

如果我理解正确,那么我认为这段代码将满足您的要求。

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('对于(.tga,.png)中的%% G,请执行forfiles / s / m * %% G / c“ cmd / c echo @relpath”')做(。 ..

应该可以正常工作,并且forfiles命令周围的引号使问题感到困惑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM