![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Скажите как запускать коммандную строку с досовскими командами? [D5, Win2k, WinXP]
TankMan © (2004-11-12 09:37:00)Вобщем проблема в том что например черезе CreateProcess я не могу запустить такую команду как, например, copy ren move и т.д. говорит файл не найден, и ведь правда - в 2к и ХР таких файлов нет, а ведь нужно, если пользователь напишет например такую строку "copy c:\*.txt d:\" или "move c:\archive\file1.zip c:\archive\file2.zip" чтобы она выполнилась, а как? не хочет запускать а ведь в command.com, все ОК - думал запускать так "command /c move c:\archive\file1.zip c:\archive\file2.zip" в ХР заработало в 2к нет :(... не помниаю...
Может есть универсальный вариант? Может кто подсказать?
КаПиБаРа (2004-11-15 07:34:00) [1]Anatoly Podgoretsky © (25.10.02 16:17)
К тому же очень плохо жестко кодировать путь в программе, для определения имени и местонахождения командного процессора существует системная переменная COMSPEC
Романов Р.В. © (19.02.03 20:48)
Другой вариант удаление через командную строку
procedure DeleteDir(const ADir: string);
function GetCmd: string;
var
Buffer: array[0..4095] of Char;
begin
SetString(Result, Buffer, GetEnvironmentVariable(PChar('ComSpec'), Buffer, SizeOf(Buffer)));
end;
var
Dir: string;
begin
if Copy(ADir, Length(ADir), 1) <> '\' then
Dir := ADir + '\'
else
Dir := ADir;
if DirectoryExists(Dir) then
ShellExecute(GetDesktopWindow, nil, PChar(GetCmd),PChar('/C rd /S /Q '+Dir),nil, SW_HIDE)
end;
TankMan (2004-11-15 07:16:00) [2]>>Ega23
Спасибо! Заработало :)
TankMan (2004-11-12 14:48:00) [3]Благодарю за пример - посмотрю вечером... ох как я надеюсь что заработает :)
Ega23 (2004-11-12 09:48:00) [4]
procedure TFSendMessage.bbOKClick(Sender: TObject);
var
i:Integer;
hnd:THandle;
ss:string;
const Command : String ='cmd /c net send ';
begin
.........
if AdditionalCompName<>'' then
begin // Дополнительная рассылка, возможно в весь домен
ss:=Command+AdditionalCompName+' '+eMessText.Text+' '+SessInfo.PersNam;
hnd:=winexec(PCHAR(ss), SW_HIDE);
if hnd <= 32 then
begin
badsound;
Exit;
end;
..........
?
Alx2 (2004-11-12 09:47:00) [5]cmd.exe /c <команды>