|
|
#1 |
|
Гость
|
WinApi::shellExecute("DEL"
почему
WinApi::shellExecute("DEL" не работает? можно как-то запустит? |
|
|
|
|
#2 |
|
Участник
|
Лень разбираться
![]() Вот так должно работать: X++: WinApi::shellExecute("cmd", "/c DEL C:\\Test\\dummy.txt"); |
|
|
|
|
#3 |
|
Гость
|
близко. Но из \Temporary Internet Files\*.* не удаляет
|
|
|
|
|
#4 |
|
Участник
|
а \Temporary Internet Files\*.* в "" ?
|
|
|
|
|
#5 |
|
Участник
|
Угу. путь надо в кавычки брать, если пробелы есть
|
|
|
|
|
#6 |
|
Участник
|
У меня из командной строки так тоже не получается.Только если зайти в саму папку и сделать del /p /s *. Тогда все ок.Как это в Аксе - не пробовал.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
|
|
|
#7 |
|
Участник
|
А что, стандартная функция не подходит?
X++: print winAPI::deleteFile("C:\\Новая папка\\Текстовый документ.txt"); pause; return; Очевидно, что параметр - это то, что от одного пробела до другого. Если сам параметр внутри себя содержит пробелы, то их надо как-то экранировать. Как? Заключить весь параметр в кавычки. Все просто, если поставить себя на место программиста, пытающегося решить аналогичную проблему. |
|
|
|
|
#8 |
|
Участник
|
Цитата:
А DEL позволяет использовать wildcards. |
|
|
|
|
#9 |
|
Участник
|
Цитата:
Сообщение от Владимир Максимов
А что, стандартная функция не подходит?
X++: print winAPI::deleteFile("C:\\Новая папка\\Текстовый документ.txt"); pause; return; Очевидно, что параметр - это то, что от одного пробела до другого. Если сам параметр внутри себя содержит пробелы, то их надо как-то экранировать. Как? Заключить весь параметр в кавычки. Все просто, если поставить себя на место программиста, пытающегося решить аналогичную проблему.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
|
|
|
#10 |
|
MCTS
|
Цитата:
А стандартная папку сотрет?
__________________
![]() В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню |
|
|
|
|
#11 |
|
Участник
|
Похоже что не сотрет:
Цитата:
If an application attempts to delete a file that does not exist, the DeleteFile function fails. If the file is a read-only file, the function fails with ERROR_ACCESS_DENIED. To delete a read-only file, you must first remove the read-only attribute.
.......
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 Последний раз редактировалось Alex_KD; 19.12.2007 в 12:04. |
|
|
|
|
#12 |
|
Участник
|
Цитата:
![]() X++: // Удаление файлов по маске static void test_FileSystemObject(Args _args) { COM comFSO = new COM("Scripting.FileSystemObject"); Filename filename = "C:\\Новая папка\\*.txt"; ; // Удалаяет все файлы по маске, даже если они помечены как Read-Only comFSO.DeleteFile(filename); } X++: // Удаление директорий со всем содержимым static void test_FileSystemObject(Args _args) { COM comFSO = new COM("Scripting.FileSystemObject"); Com comFolder; FileFolder_RU fileFolder_RU = "C:\\Новая папка"; ; print "До удаления ", comFSO.FolderExists(fileFolder_RU); if (comFSO.FolderExists(fileFolder_RU)) { comFolder = comFSO.GetFolder(fileFolder_RU); comFolder.delete(true); // true - удалить, даже если каталог Read-Only } print "После удаления ", comFSO.FolderExists(fileFolder_RU); pause; } |
|
|
|
| За это сообщение автора поблагодарили: kashperuk (5), Alenka (1). | |
|
|
#13 |
|
Участник
|
Ну и при чем тут экзотика?
Просто через Win32 API это все реализовать более муторно, поэтому COM напрашивается сам собой. К слову, удалять директории можно и без промежуточных объектовX++: COM comFSO = new COM("Scripting.FileSystemObject"); FileFolder_RU fileFolder_RU = "C:\\Новая папка"; ; if (comFSO.FolderExists(fileFolder_RU)) comFSO.DeleteFolder(fileFolder_RU, true); // true - удалить, даже если каталог Read-Only |
|
|
|
|
#14 |
|
Участник
|
Попробуйте так
X++: filename path;
filename fileName;
filename fileExt;
int nHandle;
container c;
;
......
......
fileExt = "*.txt";
c = WinApi::findFirstFile(path + fileExt);
nHandle = conpeek(c, 1);
fileName = conpeek(c, 2);
while (strLen(fileName))
{
WinApi::deleteFile(path + "\\" + fileName);
fileName = WinApi::findNextFile(nHandle);
}
...Параметры для нее в макросе Winapi Последний раз редактировалось nano3; 20.12.2007 в 12:39. |
|
|
|
|
#15 |
|
Участник
|
О. То о чем я и говорил - перебор файлов надо писать.
А если в папке еще и под-папки есть, то этот метод не будет работать, придется еще его расширять на поиск в подпапках... |
|
|
|
|
#16 |
|
Участник
|
Цитата:
Цитата:
If the file is a read-only file, the function fails with ERROR_ACCESS_DENIED. To
delete a read-only file, you must first remove the read-only attribute.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
|
|
|
#17 |
|
Участник
|
Если кого-то заинтересовал объект Scripting.FileSystemObject и что еще при помощи него можно сделать, то его описание на русском языке с примерами использования можно посмотреть здесь
http://kodu.neti.ee/~juri4/vfpplus/vbs_fso_01_ru.htm Правда, примеры использования там приведены в синтаксисе FoxPro. Но перевести их в X++ особого труда не составит. Ну, или ищите на сайте Microsoft
|
|
|
|
|
#18 |
|
Участник
|
Цитата:
Сообщение от Владимир Максимов
Если кого-то заинтересовал объект Scripting.FileSystemObject и что еще при помощи него можно сделать, то его описание на русском языке с примерами использования можно посмотреть здесь. Ну, или ищите на сайте Microsoft
![]() ![]()
|
|
|