Я хотел бы спросить, есть ли у кого-нибудь идея, как отправить результат поиска на консоль в одной командной строке, но с определенным кодом до и после вывода результатов поиска
Мне нужно запустить программу Xconverter, котораяпредназначен для работы с консолью и имеет параметры:
-s :silent mode (only mode suported yet)
-i [files] : list location of the files in quotes: {-i "a.txt" "b.txt"..}
-t [tool file] : tool file location
-m 5 : conversion style
синтаксис принят для примера (одна команда для XConverter):
"C:\XConverter.exe" -s -i "C:\a.pgm" "C:\abc\b.pgm" -t "tool.tlgx" -m 5
но мне нужно около 500 -i [файлы]к списку
, поэтому я создал поиск, который заполняет поиск тех .pgm
в древовидном режиме, где находится .bat и добавляет результат поиска (расположение файлов) один за другим
мой код работает, но единственный способя сделал это, чтобы работать, что я выдал результат эха в дополнительный файл .bat и начал файл.Есть ли способ перепрограммировать мой код, что он будет отправлять эти outpust в одну однострочную команду?
echo off
SET mypath=%~dp0
::THIS STARTS PROGRAM
(
echo | set /p="""
echo | set /p="C:\Program Files (x86)\Scm Group\Maestro\XConverter.exe" -s -i "
)>seznam_konvertovanych_suboru.bat
::THIS SEARCHERS FOR PGM FILES AND ADDS PATH OF EACH FILE TO THE LINE
for /f "delims=" %%A in ('forfiles /s /m *.pgm /c "cmd /c echo @relpath"') do (
set "file=%%~A"
setlocal enableDelayedExpansion
echo | set /p="""
echo | set /p="%mypath:~0,-1%\!file:~2!"
echo | set /p="" "
)>>seznam_konvertovanych_suboru.bat
::THIS ADDS SOME EXTRA FILE PATH TO THE LINE OF TOOL FILE, THAT IS NEEDED
(
echo | set /p=-t "Tlgx\def.tlgx" -m 5
)>>seznam_konvertovanych_suboru.bat
seznam_konvertovanych_suboru.bat
Этот код будет выводить файл seznam_konvertovanych_suboru.bat именно в этом формате
"C:\XConverter.exe" -s -i "C:\a.pgm" "C:\abc\b.pgm" -t "tool.tlgx" -m 5
Кто-нибудь знает, как перепрограммировать это, чтобы отправить этот вывод на консоль в одну строку, не создавая дополнительный файл для хранения этого кода?
Отредактировано:
Мне нужен файл START_CONVERTING.BAT , который отправит на консоль одну команду:
"C:\XConverter.exe" -s -i "C:\a.pgm" "C:\abc\b.pgm" -t "tool.tlgx" -m 5
, но «C: \ a.pgm» «C: \ abc \ b.pgm» - это результаты поиска всех файлов .pgm в этой и дочерних папках.Поэтому я скопирую START_CONVERTING.BAT в любое место, где я храню файлы .pgm.(некоторые из них находятся в папках, а эти папки в других папках), поэтому я просто скопирую STAR_CONVERTING.BAT в основную папку, которая будет заботиться обо всех файлах со всеми файлами в дочерних папках.Я просто нажму START_CONVERTING.BAT , и он преобразует эти файлы .pgm.(без создания какого-либо другого вывода в любой другой файл .bat.
решено (код)
@echo off & setlocal enableDelayedExpansion
PushD "%~dp0"
Set "XC=C:\Program Files (x86)\Scm Group\Maestro\XConverter.exe"
Set "TOOLFILE=Tlgx\def.tlgx"
Set "Files="
:: Concatenate all files in one string
for /f "delims=" %%A in ('Dir /B /S *.pgm') do set Files=!Files! "%%~A"
:: command, command line length may be an issue
"%XC%" -s -i%Files% -t "%TOOLFILE%" -m 5