1

Тема: KiXtart: удаление содержимого папок

Здравствуйте.
В txt-файле есть список папок (в столбик) без двойных кавычек и знака "\" на конце. Нужно опустошить все эти папки. Сначала я написал так:

open(1, "F:\Wallpapers\temp.txt")
WHILE @error = 0
	$l = chr(34) + readline(1) + chr(34)
	RD $l /s ;не подставляет
	@error
LOOP
close(1)
sleep 4

Потом так:

open(1, "F:\Wallpapers\temp.txt")
$FSO = CreateObject("Scripting.FileSystemObject")
WHILE @error = 0
	$l = chr(34) + readline(1) + "\*" + chr(34)
	$FSO.DeleteFile $l, true ;unexpected
LOOP
close(1)
$FSO = 0

Переменная $l не заменяется значением... Помогите.

2 (изменено: Flasher, 2015-11-13 00:45:59)

Re: KiXtart: удаление содержимого папок

$List  = "F:\Wallpapers\temp.txt"
$Title = " Опустошение папок     "
$FSO   = CreateObject("Scripting.FileSystemObject")
If $FSO.FileExists($List)
   $List = $FSO.OpenTextFile($List)
   Do
      $Folder = Trim($List.ReadLine)
      If $FSO.FolderExists($Folder)
         $Mask = $FSO.BuildPath($Folder, "*")
         $FSO.DeleteFolder($Mask, 1)
         $FSO.DeleteFile($Mask, 1)
      EndIf
   Until $List.AtEndOfStream
   $List.Close
   MessageBox("Папки пусты!", $Title, 4160)
Else MessageBox("Файла '" + $List + "' не существует!", $Title, 4144)
EndIf

3

Re: KiXtart: удаление содержимого папок

Спасибо. Работает... Надо покумекать... Тут похоже выходит нет смысла использовать kixtart.
Только у меня в списке была папка C:\Documents and Settings\Andrey\Local Settings\Temp, она осталась набитой...

4

Re: KiXtart: удаление содержимого папок

По большому счёту нет смысла. Тот же бэйсик (почти). У методов самого kixtart есть проблемы с нечитабельными символами (в т.ч. с кириллицей, Юникодом). Насчёт %Temp% решаемо только циклом и частиным удалением, т.к. там есть занятые программами файлы.

5

Re: KiXtart: удаление содержимого папок

У методов самого kixtart есть проблемы с нечитабельными символами (в т.ч. с кириллицей, Юникодом).

...там есть занятые программами файлы.

Просветили. Благодарю.

6

Re: KiXtart: удаление содержимого папок

Скажите, а RD в kixtart поддерживает переменные? Так вообще можно: RD $l /s или нет. Просто в кавычках работает: rd "C:\cxz\fgh" /s.

7

Re: KiXtart: удаление содержимого папок

Так RD удаляет папку, а не только её содержимое. Команды эти ещё из cmd взяты. А что касается переменных, то для их обработки кавычки (за исключением вызова комстроки) не требуются. Полагаю, это касается любых языков.

8 (изменено: o5andrey, 2015-11-13 09:30:30)

Re: KiXtart: удаление содержимого папок

(Папку можно заново потом создавать.) А вот этот скрипт выдавал ошибку 2 (ERROR_FILE_NOT_FOUND: The system cannot find the file specified.) Меня вообще интересует как заставить его подставлять. Кодировки в файлах ANSI, делал и OEM...

open(1, "F:\Wallpapers\temp.txt") ?
WHILE @error = 0
	$l = chr(34) + readline(1) + chr(34)        
  $l
	RD $l /s
	? "Error: " @error
LOOP    
? close(1)
sleep 6             

9 (изменено: Flasher, 2015-11-13 13:16:30)

Re: KiXtart: удаление содержимого папок

Этот скрипт вообще какой-то неправильный. Почему 1 у open, если это к потенциальному созданию файла?
$l - это что за строка такая? И проверка на ошибку в цикле как раз заблокирует возможность удалить оставшееся.
И ещё раз:

Flasher пишет:

для их обработки кавычки ... не требуются

chr(34) - это кавычка. Повторяюсь, не нужно ими обрамлять значение переменных вне комстроки.
В любом случае папка %Temp% при наличии залоченных данных командой RD не удалится, у уж точно глупо делать это в отношении системной папки.

10

Re: KiXtart: удаление содержимого папок

...для их обработки кавычки ... не требуются
chr(34) - это кавычка. Повторяюсь, не нужно ими обрамлять значение переменных вне комстроки.

Дошло наконец... А я специально всё это... думал надо как и вручную. Просветили.

Почему 1 у open, если это к созданию файла?

Кикстарт может открыть 10 файлов: 1 - для идентификации какой файл. http://www.kixtart.org/manual/

$l - это что за стока такая?

Строка из блокнота.

Проверка на ошибку в цикле как раз заблокирует возможность удалить оставшеется.

У меня цикл и так ни разу и не выполнялся.

В любом случае папка %Temp% при наличии залоченных данных командой RD не удалится, у уж точно глупо делать это в отношении системной папки.

Да-да. Ещё раз спасибо за ответы.

11

Re: KiXtart: удаление содержимого папок

Да на здоровье.

o5andrey пишет:

1 - для идентификации какой файл.

Вовсе нет. Это режим открытия.

Mode
Optional parameter that indicates what should happen if the file does not exist. This parameter can have the following values:

  • 0 If the file does not exist, Open( ) fails with return code 2 (default).

  • 1 If the file does not exist, Open( ) will create a new file.

  • 2 Opens the file for read access (default).

  • 4 Opens the file for write access.

12

Re: KiXtart: удаление содержимого папок

open(1, "F:\Wallpapers\temp.txt")

Open (FileHandle, "filename", mode)
FileHandle: A numeric expression indicating the handle number of the file to open. Possible values range from 1 to 10.
Mode: Optional parameter that indicates what should happen if the file does not exist.

13

Re: KiXtart: удаление содержимого папок

Тады ой. Места перепутал.