ALIS

Software pro veřejnou správu

Vzdálená pomoc
10. 2. 2005

Problémy s příkazem EXEC

Při použití příkazu EXECv aplikaci může pod Win XP docházet k různým problémům. Stejně to může platit i pod ostatními verzemi Win 32 (NT, 2000).

Nejčastěji se objevují problémy při volání interních příkazů DOSu. Např.

EXEC('','COPY s1 s2',...);

nic nezkopíruje a vypíše hlášku, že daný příkaz není ani interní ani externí příkaz.


Poznámka:
Pokud si nejsme jisti, o jaký problém jde, můžeme příkaz EXEC upravit na
EXEC('','',...); a požadovaný DOS-příkaz zadat ručně.


V příkazu EXEC('',...) FAND vždy volá program, který je nastaven v SET parametru COMSPEC. Většinou tam je
ComSpec=C:\WINDOWS\system32\cmd.exe
a nejsou problémy. Příčinou problémů asi může být to, že COMSPEC může být nastaveno jinak.

Tak by se dalo vysvětlit to, že v problémových případech pomůže úprava EXECu na:

EXEC( 'CMD','/c ...',... 

ve výše uvedeném příkladu

EXEC('CMD','/c COPY s1 s2',...);

Zásah do úlohy pro konkrétní verzi op. systému je však problematický. Takže jiným, asi lepším řešením, by mohlo být na konkrétní konfiguraci zjistit, jak je SET parametr COMSPEC nastaven, proč to není CMD.EXE, případně tam CMD.EXE nastavit. Ve Win XP lze COMSPEC nastavit ve Vlastnostech ikony "Tento počítač", záložka "Upřesnit", tlačítko "Proměnné prostředí".