2013-03-13 5 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 

및 I의 범위에 제 파라미터를 변경할 0.0- 단계 0.1> 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" 
) 

가 수행 위의 모든 기회가 어디 somkewhere 가까이에 내가 linke 갈 것이라고?

답변

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` "이것을 대체 할 응용 프로그램에서 의심의 여지가 POWERSHELL가 옵션 인 경우

+0

(당신의 출력 작업 ... 파일이 아닌 디렉토리에 될 것이라고 지적)는 소수점 데이터 유형을 떠 지원합니다. 그리고 나는 새로운 Win 버전을 가지고 있으며 XP에서 무료로 얻을 수 있다고 믿는다.

+0

@Peter Wright 빠른 답변을 주셔서 감사합니다! 나는 공부하고 있습니다. 코드 : 나는 명령 SET value =! value : ~ 0, -1을 추측한다! : value : ~ -1! 실제 넘버링을 다루는 것이지 .... 맞다. ? – user2148834

+0

배치는 항상 문자열에서 작동합니다. 수학 함수는 숫자 문자열을 숫자 표현으로 변환 한 다음 다시 변환합니다. 다시 문자열로. '% var %'는 변수'var'의 값을 나타냅니다. FOR 명령이 발생하면 FOR에서 DO를 끝내는 닫는 괄호까지 여러 줄이 떨어져있는 전체 명령이 구문 분석됩니다. 그 과정의 일부로,'% var %'는 그 당시의'var' 값 즉 PARSE-TIME 값으로 대체됩니다. – Magoo

관련 문제