批处理 - 具有多种文件类型的循环中的文件
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!
)
我使用 this answer 将 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
)
)
我相信,但没有测试过:
for /f "delims=" %%A in ('for %%G in (.tga, .png) do forfiles /s /m *%%G /c "cmd /c echo @relpath"') do (...
应该可以,但是 forfiles
命令周围的引号混淆了这个问题。
我正在尝试制作用于转换某些文件类型的批处理文件。所以我没有在代码里放更多无用的循环,我想把它放到一个循环里。
到目前为止,这是我的代码:
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!
)
我使用 this answer 将 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
)
)
我相信,但没有测试过:
for /f "delims=" %%A in ('for %%G in (.tga, .png) do forfiles /s /m *%%G /c "cmd /c echo @relpath"') do (...
应该可以,但是 forfiles
命令周围的引号混淆了这个问题。