Результаты поиска CMD отправлять на консоль - PullRequest
0 голосов
/ 31 мая 2018

Я хотел бы спросить, есть ли у кого-нибудь идея, как отправить результат поиска на консоль в одной командной строке, но с определенным кодом до и после вывода результатов поиска

Мне нужно запустить программу 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

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

попробуйте с этим пакетом

Xconverter для xxl - PGMX

1 задайте весь путь для конвертера

2 создайте список файлов xxl на рабочем столе в этом примереили подпапка рабочего стола!

3 Masetro не может быть установлен как Office PC, вы должны запустить его на ПК CN!

@echo OFF
COLOR F1
TITLE "Convertor XXL to PGMX"
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º      Converteur Xconverter         º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
echo "Stop command with Ctrl+C"
echo.
Echo "Path SET"
TIMEOUT /t 5 >nul
Set todo="%userprofile%\desktop\todo.txt"
Set def="%PROGRAMFILES(x86)%\Scm Group\Maestro\Tlgx\def.tlgx"
Set Compil="%PROGRAMFILES(x86)%\Scm Group\Maestro\Xconverter.exe"
Set desktop="%userprofile%\desktop"


echo "To do list of *.XXL files"
TIMEOUT /T 10 >nul
cd %userprofile%\desktop
dir /a /b /o /s *.xxl > %todo%


echo "Files convert command"
TIMEOUT /T 10 >nul
for /f "delims=" %%a in (%todo%) do %Compil% ^ -s -m 4 ^
-i "%%a" ^
-t %def%


echo "Rapport files"
Timeout /T 10 >nul
cd %desktop%
dir /a /b /o /s *.pgmx > Rapport.txt


Echo "Delete to do list"
TIMEOUT /T 10 >nul
DEL %todo% /F /S /Q >nul

Но не вдавайтесь в подробности стиля Convesion -m X

если вы можете передать мне детали -m, это было бы здорово!

Всего наилучшего, и надеюсь, что это полезно

D-Alexandre V.

0 голосов
/ 01 июня 2018

Если я правильно понимаю, это может сработать

@echo off & setlocal enableDelayedExpansion

PushD "%~dp0"
Set "XC=C:\Program Files (x86)\Scm Group\Maestro\XConverter.exe"
Set "Files="

:: Concatenate all files in one string
for /f "delims=" %%A in ('Dir /B /S *.pgm') do set Files=!Files! "%%~A"

:: store command in batch file, command line length may be an issue
>"seznam_konvertovanych_suboru.bat" Echo "%XC%" -s -i %Files% -t "tool.tlgx" -m 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...