Привет.
По сути, у меня есть пакетный файл, который просматривает все файлы моделей и текстур, сохраняет их абсолютный путь и затем передает собранные пути в мой файл converter.exe.В настоящее время я делаю это, добавляя путь к каждому входному файлу в переменную set /p
, а вывод этой переменной перенаправляется в params.txt.
for /f "tokens=*" %%a in ('dir "%MODEL_SRC%" /a:d-h /b') do (
set /p=-o="%MODEL_DST%\%%a.res" >cvtr_params.txt<nul
for /f %%b in ('dir "%MODEL_SRC%\%%a\*.obj" /a:-d-h /b') do (
<nul (set/p=""%MODEL_SRC%\%%a\%%b" ") >>cvtr_params.txt
)
for /f "tokens=*" %%c in ('dir "%TEX_SRC%\%%a\*.png" /a:-d-h /b') do (
<nul (set/p=""%TEX_SRC%\%%a\%%c" ") >>cvtr_params.txt
)
start /b /wait "" bin\converter.exe @cvtr_params.txt >nul
)
del cvtr_params.txt
Params.txt будет выглядеть следующим образом:
-o="ConvertedPath\Ingame.res" "ModelPath\Model1.obj" "ModelPath\Model2.obj" "TexPath\Tex1.png" "TexPath\Tex2.png"
И так далее, и тому подобное.И да, код ДОЛЖЕН быть таким сложным для фактического добавления в конец строки, а не новой строки.
Теперь я подумал, что cvtr_params.txt не нужен, и имел такой подход, который сделалпочти то же самое, просто не перенаправляя «вопрос» переменной set /p
в params.txt, а фактически просто присваивая set /p params
«вопросу» set /p z
.
setlocal EnableDelayedExpansion
for /f "tokens=*" %%a in ('dir "%MODEL_SRC%" /a:d-h /b') do (
set /p params=<nul
set /p z=-o="%MODEL_DST%\%%a.res" <nul
for /f %%b in ('dir "%MODEL_SRC%\%%a\*.obj" /a:-d-h /b') do (
<nul (set/p=""%MODEL_SRC%\%%a\%%b" ")
)
for /f "tokens=*" %%c in ('dir "%TEX_SRC%\%%a\*.png" /a:-d-h /b') do (
<nul (set/p=""%TEX_SRC%\%%a\%%c" ")
)
start /b /wait "" bin\converter.exe !params!
)
endlocal
Но почему-то переменная !params!
выглядит пустой.(эхо доставляет "ECHO is set to <OFF>
") Теперь я нахожусь в конце своего ума, и я только начал серьезно работать с пакетными файлами, как 3 дня назад, поэтому, если у кого-то есть хорошая идея, дайте мне услышать это! :))
Привет