CMD搜索结果发送到控制台

时间:2018-05-31 20:17:07

标签: batch-file cmd

我想问一下是否有人知道如何在单个命令行中将搜索结果发送到控制台,但在搜索结果输出之前和之后使用一些特定代码

我需要运行由控制台操作的程序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 :(得分:0)

如果我理解正确,这可能会起作用

@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

答案 1 :(得分:0)

尝试该批次

Xconverter用于xxl到PGMX

1设置转换器的所有路径

2创建在此示例或桌面子文件夹上的桌面上xxl文件的列表!

不能将3 Masetro安装为Office PC,必须在CN PC上运行它!

@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-亚历山大五世。