2013-03-13 16 views
1

我真的很陌生批處理腳本,所以請耐心等待! 在Windows XP中我有一個可執行文件有input.inoutput.out文件。 我想創建一個批處理,它讀取輸入文件,修改一行或多行,運行.exe並將輸出存儲在名稱取決於對輸入文件所做更改的文件夾中。Windows批處理文件以不同的輸入文件運行可執行文件

說我有與4行這樣一個輸入文件:

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

,我想改變第二參數的範圍0.0-0.85> 1.0 0.1步驟:

@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

你會面對批量數學只涉及整數...

@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一個根本的問題,並沒有行開始"]""["

我只是將構建的臨時文件複製到創建的新目錄中的文件inputdata.。在您的應用程序毫無疑問,你將與executable.exe < "%tempfile%" >> .\"!value!\resultfilename'」替換這個(請注意,您的輸出將是一個文件不是一個目錄...)

+0

如果PowerShell是一個選項,它支持浮點數據類型。而我相信它帶有較新的Win版本,並且可以免費獲得XP。 2013-03-13 11:20:58

+0

@Peter WrightThanks快速回答!! 我正在學習代碼:我猜的是指令SET value =!value:〜0,-1!。!value:〜-1!是否有處理真實編號....對嗎?你可以詳細說明它在做什麼請? – user2148834 2013-03-13 16:45:59

+0

批處理總是在字符串上工作,數學函數對轉換爲數字表示的數字串起作用,然後轉換回來再次串起。 '%var%'表示變量'var'的值當遇到FOR命令時,整個命令被解析,從FOR到結束DO的右括號,可能在很多行之外。作爲該過程的一部分,'%var%'被替換爲'var'的當前值 - 即PARSE-TIME值。 – Magoo 2013-03-13 16:57:22

相關問題