Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Возврат переменной   Найти похожие ветки 

 
Loki3d   (2010-02-05 17:38) [0]

есть программа

program Project1;
{$APPTYPE CONSOLE}
Uses
windows,SysUtils;
{$R *.RES}
begin
 ExitCode:=length(paramStr(1));
end.

она должна возвращать длинну строки.

Я использую программу в BAT файле

for /F "usebackq tokens=*" %%a in (Filename) do (
Project1.exe %%a
echo err-%ErrorLevel%
)

и получаю все время 0
если же в BAT файле я просто вызываю программу и передаю ей значение переменной

set aa=11111111111111
Project1.exe %aa%
echo err-%ErrorLevel%

то всё работает

может ктото сможет пояснить, почему так происходит?
может можно как то иначе получить результат работы программы для дальнейшего использования его в BAT скрипте?


 
MBo ©   (2010-02-05 17:42) [1]

проверил, что программа в первом случае действительно получает параметр?(выводом writeln, например)


 
Loki3d   (2010-02-05 17:47) [2]

да, получает 100%
и потом
в случае вызова проги в BAT вне "цикла" For
все же работает!


 
Ганя   (2010-02-05 19:28) [3]

следовательно, проблема не в программе


 
Loki3d   (2010-02-05 23:01) [4]

спасибо! капитан очевидность.


 
Демо ©   (2010-02-06 04:18) [5]


> и получаю все время 0


if errorlevel 5 ...
if errorlevel 4 ...
if errorlevel 3 ...
if errorlevel 2 ...
...


 
Демо ©   (2010-02-06 04:24) [6]

PS.

http://www.robvanderwoude.com/errorlevel.php


 
Дмитрий С ©   (2010-02-06 17:53) [7]

Delphi:
program GetLength;
{$APPTYPE CONSOLE}
uses
 Windows;

begin
 Writeln(Length(ParamStr(1)));
end.


BAT:

@echo off
setlocal ENABLEDELAYEDEXPANSION

for /F "usebackq tokens=*" %%a in (test.bat) do (

for /f "usebackq" %%x in (`GetLength.exe "%%a"`) do set ALength=%%x

echo Length of %%a is !ALength!

)

endlocal


Интересно, почему такая конструкция не прокатывает для установки переменной окружения из вывода:
echo testvalue|set /p testkey=


 
Дмитрий С ©   (2010-02-06 18:11) [8]

Для твоего варианта, кстати, прокатывает так:

@echo off
setlocal ENABLEDELAYEDEXPANSION

for /F "usebackq tokens=*" %%a in (test.bat) do (
GetLength.exe "%%a"
echo Length of %%a is !ErrorLevel!

)

endlocal


 
Loki3d   (2010-02-08 11:27) [9]

спасибо Дмитрий С
пожалуй так и сделаю, как ты предложил.. буду обрабатывать результат через Writeln раз иначе без шансов.



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.053 c
15-1273264199
Юрий
2010-05-08 00:29
2010.08.27
С днем рождения ! 8 мая 2010 суббота


2-1271079276
Dels
2010-04-12 17:34
2010.08.27
Качаем файл по ссылке


2-1265712324
Nilman
2010-02-09 13:45
2010.08.27
Поясните пожалуйста значение свойства TThread.FreeOnTerminate


2-1274175056
namco
2010-05-18 13:30
2010.08.27
odbc c delphi


4-1238491669
Lexi
2009-03-31 13:27
2010.08.27
GetWindowRect; Скриншот максимизированного окна