Windows批处理文件以不同的输入文件运行可执行文件

时间:2013-03-13 10:03:07

标签: windows batch-file text-files

我是批处理脚本的新手,所以请耐心等待! 在windows xp中,我有一个可执行文件,其中包含input.inoutput.out个文件。 我想创建一个读取输入文件的批处理,修改一行或多行,运行.exe并将输出存储在一个文件夹中,该文件夹的名称取决于对输入文件所做的更改。

假设我有一个包含4行的输入文件:

32.0d0 ! first parameter
54.0d5 ! second parameter
1.5d-1 ! third parameter
11.0d0 ! fourth parameter

我希望使用步骤0.1更改0.0-> 1.0范围内的第二个参数:

@echo off
setlocal EnableDelayedExpansion
set ReplaceLine1=2
set inpfile=input.in
set tempfile=input.temp
set increment=0.1
if exist "%tempfile%" del "%TempFile%"
for /L %%i in (1,1,11) do (
set /A param_value=(%%i-1)*increment
set /A Cnt2=0
for /f %%a in (%inpfile%) do (
set /A Cnt2+=1
if !Cnt2! geq %ReplaceLine1% echo %param_value% >> "%tempfile%" else echo %%a >> "%tempfile%"
)
copy /y "%tempfile%" "%inpfile%"
MD .\"param_value"
executable.exe < "%tempfile%" >> .\"param_value" 
)

上面有没有机会让我接近我要去的地方?

1 个答案:

答案 0 :(得分:1)

你将面临一个基本的问题,批量数学只能处理整数......

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET line=%1
SET start=%2
SET inc=%3
SET end=%4
IF NOT DEFINED end ECHO require line#, start, increment, end&GOTO :EOF 
SET inpfile=input.IN
SET tempfile=input.temp
FOR /L %%i IN (%start%,%inc%,%end%) DO (
 IF EXIST "%tempfile%" DEL "%tempfile%"
 FOR /f "tokens=1*delims=[]" %%a IN ('find /n /v "" ^<%inpfile%') DO (
  IF %%a==%line% (
  SET value=%%i
  SET value=!value:~0,-1!.!value:~-1!
  IF .%%i==!value! SET value=0!value!
  >>%tempfile% ECHO !value!
  ) ELSE (>>%tempfile% ECHO %%b)
 )
MD .\!value!
COPY %tempfile% .\!value!\inputdata.
)

我假设您的输入文件不包含!comment,并且没有行开始"]""["

我只是将构造的tempfile复制到创建的新目录中的文件inputdata.。毫无疑问,在您的应用程序中,您会将其替换为executable.exe < "%tempfile%" >> .\"!value!\ resultfilename `“(注意您的输出将是文件而不是目录......)