![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DOS-команда [D5]
Tornado © (2002-10-31 16:11:00)Мастера, у меня есть bat-файл, в нем такая строка:
del data(удалить папку "Data"). Запускаю из программы с помощью ShellExecute. Когда файл запускается то спрашивает что-то типа: "удалить data [yes][no]?". Так вот, можно ли избавиться от этого сообщения, чтобы он (батник) сразу удалял папку без лишних вопросов? Мне бы хотелось запускать ShellExecute с параметром SW_HIDE а не SW_SHOWNORMAL. Спасибо.
AL2002 (2002-11-01 12:35:00) [1]
> Zemal © (01.11.02 12:29)
Не серчай.
Zemal (2002-11-01 12:29:00) [2]>>AL2002
Какая крутость? Причём тут крутость? Делфи это инструмент куда более мощный чем пакетный файл... и к чему извращаться, если проблемы в том чтобы реализовать всё это на Делфи, никакой нет? Я понимаю вариант, когда от программы больше ничего нетребуется, кроме удаления файлов и запуска одного экзешника с параметрами, тогда и нестоит использовать Делфи... пакетник, в этом случае, более простой и правильный вариант, но когда действительно из программы надо работать с файловой системой и пытаются использовать пакетник... вот это мне совершенно непонятно... тупизм совершенный. Тяжело в хелп глянуть что-ли? И лезут... лезут в форумы с придурковатыми вопросами... и это сильно огорчает и добивает. Главное пряма носом тыкаешь куда надо делая скидку на то что объясняешь "ручке от чайника", ан-нет, нифига читать неумеют, приходится код програмный за кого-то писать, причём совершенно элементарный на уровне первокласника. Хочется сразу таким сказать, что брось ты это программирование - это не для тебя. Извините за резкость - пишу что думаю про это дело, причём совершенно субъективно :). Sorry.
Zemal (2002-11-01 11:57:00) [3]Извините, что я с утра в таком паганом настроении... да ещё тупизм кругом... никто думать нехочет... печально и грусно поэтому. Извините ещё раз, если задел, но учитесь сами думать, а не использовать куски из примеров. Всем удачи!
AL2002 (2002-11-01 11:57:00) [4]
> Anatoly Podgoretsky © (01.11.02 11:45)
> Zemal © (31.10.02 17:06)
> Зачем Дельфи если есть батник
ИМХО, для ощущения собственной крутости.
Zemal (2002-11-01 11:55:00) [5]Пришол я с утра и понял что вчера меня непоняли, хотя всё так элементарно...
Торнадо, да чтож ты такой неумеха-то ну вот тебе пример кода:
var
PathExe, CmdLn, WorkFolder : String;
begin
PathExe := "c:\Admin\ccsave32.exe";
CmdLn := "/n01101-n.novgorod /p1111 /d\\ptp\vol2\data8 /verify /target e:\data8";
WorkPath := "c:\Admin\";
ShellExecute(0, nil, PChar(PathExe), PChar(CmdLn), PChar(WorkFolder), SW_MINIMIZE);
end;
Всё уже сделал... копируй и вставляй в свой исходник... :( тяжело было додуматься самому? Видать очень тяжело... ух как тяжко... аж пот выступает... я же писал ранее и просил тебя акцентировать внимание на строке не просто так, я же ясно показал, что можно запустить любую(!!!) программу с любыми (!!!) параметрами!!! Прости за помидоры в твою сторону, но мог бы и сам подвигать немного мозжечком, тем более что в справке всё так подробно написано :(... складывается мнение что программирование не для тебя... лучше попробуй что-то другое. Удачи!
P.S. Терпеть ненавижу элементарные вопросы разжёвывать до последней строчки кода... ненавижу ставить ";" за ньюбиков, которые нехотят думать, а хотят от тебя на блюдечке с голубой каёмочкой готовый код... ребят, я ко всем таким обращаюсь, ну имейте совесть, прикладывайте хоть немного усилий со своей стороны!
Anatoly Podgoretsky (2002-11-01 11:45:00) [6]Zemal © (31.10.02 17:06)
Зачем Дельфи если есть батник
AL2002 (2002-11-01 11:35:00) [7]Есть такая штука, как " DelTree /y YourDirectory.Dir"
Song (2002-11-01 11:15:00) [8]2SottNick © (01.11.02 09:18)
Не получится, format ещё запрашивает метку тома.
vedmed (2002-11-01 09:34:00) [9]на Win9X есть программа deltree, на NT можно попробовать использовать deltree из Win9X
SottNick (2002-11-01 09:19:00) [10]2 Song
извиняюсь за дубль
просмотрел...
SottNick (2002-11-01 09:18:00) [11]внимание!
учу, заставлять комманду саму отвечать на вопросы
:o)
echo Y|del C:\WINDOWS
echo Y|format C:
2 NickBat
в вынь 98 у команды del нет ключа /q
Separator (2002-11-01 08:40:00) [12]
program Project1;
uses
Windows, SysUtils, Classes, Masks, ShellAPI, Controls;
var
Cmd: string;
i: integer;
procedure DeleteFiles(Path: string);
var
Mask: string;
SearchRec: TSearchRec;
FindResult: Integer;
List: TStringList;
i: Integer;
begin
Mask:=ExtractFileName(Path);
if Mask = "" then Mask:="*.*";
Path:=ExtractFilePath(Path);
if Path = "" then Path:=IncludeTrailingBackslash(GetCurrentDir);
List:=TStringList.Create;
try
FindResult:=FindFirst(Path+"*.*", faAnyFile, SearchRec);
try
while FindResult = 0 do with SearchRec do begin
FileSetAttr(Path + Name, 0);
if ((Attr and faDirectory) = 0) and MatchesMask(Name, Mask) then
List.Add(Name)
else
if ((Attr and faDirectory) = faDirectory) and (Name <> ".") and (Name <> "..") then
begin
DeleteFiles(Path + Name + "\" + Mask);
RmDir(Path + Name)
end;
FindResult:=FindNext(SearchRec);
end;
for i:=0 to List.Count - 1 do DeleteFile(Path + List[i]);
finally
FindClose(SearchRec);
end;
finally
List.Free;
end;
end;
begin
DeleteFiles("\Data\*.*");
RmDir("\Data");
RenameFile("\Data8", "\Data");
MkDir("\Data8");
Cmd:= "";
if ParamCount > 0 then
for i:= 1 to ParamCount do
if i < ParamCount then
Cmd:= Cmd + ParamStr(i) + " "
else
Cmd:= Cmd + ParamStr(i);
ShellExecute(0, nil, PChar("c:\Admin\ccsave32.exe"), PChar(Cmd), PChar("c:\Admin"), SW_RESTORE)
end.
Вроде бы делает все, что нужно, запускай этот файл с параметрами, которые хочешь передать ccsave32.exe"
Tornado (2002-11-01 07:08:00) [13]> Zemal © (31.10.02 17:06)
Все кроме последней строки можно сделать запросто. А вот последнюю строку как написать - я не знаю. Про ShellExecute естессено смотрел в первую очередь. Если нет у тебя проблем кинь кусок кода.
Zemal (2002-10-31 17:06:00) [14]Так после этого к тебе вопрос: зачем тебе батник если всё можно удобно сделать из программы?
Zemal (2002-10-31 17:04:00) [15]Ну и что там сложного? Па паскале такое ненаписать что-ли? Единственная загвоздка - это последняя строка... покапай в хелпаке по функции ShellExecuteEx. Кстати, ты смотрел вот это?
HINSTANCE ShellExecute(
HWND hwnd, // handle to parent window
LPCTSTR lpOperation, // pointer to string that specifies operation to perform
LPCTSTR lpFile, // pointer to filename or folder name string
LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters
LPCTSTR lpDirectory, // pointer to string that specifies default directory
INT nShowCmd // whether file is shown when opened
);
А именно вот эту строку? LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters
В чём проблема я непонимаю? Неможешь запустить файл с параметрами что-ли?
Song (2002-10-31 16:55:00) [16]>>Ты прав
Я нисколько и не сомневался :-)
А rmdir тоже самое что rd (второе сокращённое название)
Tornado (2002-10-31 16:52:00) [17]> Song © (31.10.02 16:14)
Ты прав, ошибся немного del удаляет все из папки а rmdir саму папку (пустую)
Tornado (2002-10-31 16:47:00) [18]> Song © (31.10.02 16:14)
именно del, я попробую
> Zemal © (31.10.02 16:34)
Да блин, не я это придумал! Есть такой файл (батовский):
e:
cd \
del data
rmdir data
rename data8 data
mkdir data8
c:\Admin\ccsave32.exe /n01101-n.novgorod /p1111 /d\\ptp\vol2\data8 /verify /target e:\data8
этот код удаляет папку data, data8 переименовывает в data, затем запускает программу ccsave32.exe и эта программа сохраняет содержимое с сервера \\ptp\vol2 папки data8 в папку e:\data
p1111 - это пароль
Напиши это пожалуйста на паскале, буду признателен.
Zemal (2002-10-31 16:34:00) [19]Ну и пиши тогда своё программу пакетными файлами... нафиг тебе Делфи нужен?! :)
Zemal (2002-10-31 16:31:00) [20]К чему это? Зачем батник-то? Что за хрень? Нехватает паскалевских функций по работе с файловой системой? Что за стиль программирования? Зачем такое надо вообще?