Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 批处理-用于循环中具有多种文件类型的文件_Windows_Batch File - Fatal编程技术网

Windows 批处理-用于循环中具有多种文件类型的文件

Windows 批处理-用于循环中具有多种文件类型的文件,windows,batch-file,Windows,Batch File,我正在尝试创建一个批处理文件,用于转换某些文件类型。所以我没有在代码中加入更多无用的循环,我想把它放在一个循环中 这是我目前的代码: cd "%inputdir%" setlocal disableDelayedExpansion for /f "delims=" %%A in ('forfiles /s /m *.tga /c "cmd /c echo @relpath"') do ( set "file=%%~A" setlocal enableDelayedExpansion

我正在尝试创建一个批处理文件,用于转换某些文件类型。所以我没有在代码中加入更多无用的循环,我想把它放在一个循环中

这是我目前的代码:

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(“%for%%G in(.tga,.png)do forfiles/s/m*%%G/c”cmd/c echo@relpath“”)do(


应该可以工作,而且
forfiles
命令周围的引号会混淆问题。

我在让编辑器接受我的代码时遇到问题。当我试图发布某行代码时,我一直遇到错误。我正在试图找出问题…请容忍我。奇怪的是…我不得不将代码块放在块引号内,否则引号会被删除ound
“cmd/c echo@relpath”
导致了一个问题,当我试图发布或更新答案时,我会得到一个错误。好吧,它几乎可以工作,比以前更进一步:d然而,由于某种原因,它只找到第一个的类型(.tga在本例中,但当我改变顺序时,它是.png)对于另一个,它写入错误:类型为“*.png”的文件找不到。当我说它对我有效时,我的意思是使用
ECHO%%A
。查看您的代码,最后您有
CD!Convertfolder!
。这可能是您的问题。您正在
CD
进入另一个文件夹,然后当下一个
forfiles
命令运行时,它正在另一个不包含任何文件的文件夹中运行它要查找的文件类型。哦,是的!这正是问题所在!非常感谢!在这里发布之前,我尝试了各种引号组合,这不是问题:)