从.txt文件中提取文本以插入批处理文件以运行exe

时间:2016-01-12 15:51:00

标签: windows batch-file

我对此非常陌生,并希望得到一些帮助。

我试图在命令行中运行一个程序,但我需要添加一个更改的驱动器号和一个也会更改的部件号。 例:     start "" "U:\ISO\fileTool\file_Update.exe /m:(PARTNUMBER) /t:(DRIVELETTER) /v /l:logfile.text"

程序使用m:后面的内容作为我需要的部件号。 它还使用了T:之后的内容,用于我要复制的驱动器号。 我希望能够选择是否插入v(验证)。 我想选择是否插入l(logfile)。

作为准备工作的一部分,我有一个批处理文件,要求用户提供部件号,驱动器号,是否要验证以及是否需要日志文件。它的输出是一个文本文件,看起来像这样,没有括号中的信息

文本文件输出:

Variable One   = 1234 (partnumber)

Variable Two   = D (Driveletter)

Variable Three = Y (validate could be N to exclude)

Variable Four  = Y  (logfile could be N to exclude)

所以我需要的是一种将变量信息插入批处理文件并使用开关运行.exe文件的方法 EX:     start "" "U:\ISO\fileTool\file_Update.exe /m:12345 /t:m /v /l:logfile.txt"

2 个答案:

答案 0 :(得分:1)

正如Squashman在评论中已经指出的那样,你不需要文件:

@echo off 
set /p "VarOne=Enter Part Number:     " 
set /p "VarTwo=Enter Drive Letter:    " 
set /p "VarThree=Enter Validate? Y/N: "
if /i "%VarThree%"=="Y" (set "VarThree=/v") else (set "VarThree=")
set /p "VarFour=Use Log File? Y/N:    "
if /i "%VarFour%"=="Y" (set "VarFour=/l:logfile.txt") else (set "VarFour=")
start "" "U:\ISO\fileTool\file_Update.exe" /m:%VarOne% /t:%VarTwo% %VarThree% %VarFour%

答案 1 :(得分:0)

@ECHO OFF
SETLOCAL

CALL :run %*

:loop
SET "input="
SET /p "input=Part[,Drive[,Verify[,Logfile]]]"

IF DEFINED input CALL :run %input%&GOTO loop

GOTO :EOF 


:run
FOR %%a IN (logfile verifyp) DO SET "%%a="
IF "%~4" neq "" SET "logfile=/l:%~4"
IF /i "%~3" equ "Y" SET "verifyp=/v"
IF /i "%~2" equ "" (SET "drive=D") ELSE (SET "drive=%~2")
ECHO(start "" "U:\ISO\fileTool\file_Update.exe /m:%~1 /t:%drive% %verifyp% %logfile%"

GOTO :EOF 

这将允许您以 thisbatch 1234运行myogfilename

或仅仅作为 thisbatch 1234

默认为驱动D,没有验证且没有日志文件。

我误读了您希望y指定logfile = logfile.txt

IF /i "%~4" equ "y" SET "logfile=/l:logfile.txt"

run子程序中的“〜4”处理的plac中,如果最后一个参数为y,则将其转换为“use logfile.txt