Что нового

Уборка рабочего стола

wolk88

Новичок
Сообщения
12
Репутация
0
Добрый день. :laugh:
Уже голову себе сломал. =))))
Необходимо убрать с рабочего стола все ярлыки кроме нужных, в отдельную папку.
Проблема!!! Скрипт работает только с системного диска.
Проблема!!! Незнаю как его остановить. (все копирует и ждет :whistle:smile:
Скрипт писал не с 0. За основу взял Help
Код:
; Shows the filenames of all files in the current directory
$search = FileFindFirstFile("*.*")  
DirCreate(@DesktopDir & "\Ярлыки\")

; Check if the search was successful
If $search = -1 Then
    MsgBox(0, "Error", "No files/directories matched the search pattern")
    Exit
EndIf

Global $Yar_Data = _
	StringSplit( _
		"Mozilla Firefox.lnk|Mozilla Firefox.lnk|Mozilla Firefox.lnk", "|") 

While 1
    $file = FileFindNextFile($search) 
    If  $file <> $Yar_Data Then 
    FileCopy( @DesktopDir & $file, @DesktopDir & "\Ярлыки\" & $file, 1 )
    EndIf
WEnd

; Close the search handle
FileClose($search)
 

XpycT

Скриптер
Сообщения
380
Репутация
133
wolk88 сказал(а):
Необходимо убрать
Тогда надо использовать команду FileMove, а не FileCopy

Код:
#Region Includes
#include <Array.au3>
#include <File.au3>
#EndRegion Includes

Global $Yar_Data = StringSplit("Mozilla Firefox.lnk|Mozilla Firefox.lnk|Mozilla Firefox.lnk", "|")

; Создаем массив со всеми ярлыками на Рабочем столе
$aDesktopLnkFiles = _FileListToArray(@DesktopDir, "*.lnk", 1)
If Not IsArray($aDesktopLnkFiles) Then Exit 99 + 0 * MsgBox(0, "", "На рабочем столе нет ярлыков")

For $d = 1 To $aDesktopLnkFiles[0]
; Производим поиск в массиве $Yar_Data
	$iCheckLnk = _ArraySearch($Yar_Data, $aDesktopLnkFiles[$d], 1)

; Если значение переменной $iCheckLnk = -1 значик ярлык не найден, создаем папку (если она не существует) и убераем ярлык в папку
	If $iCheckLnk = -1 Then FileMove(@DesktopDir & "\" & $aDesktopLnkFiles[$d], @DesktopDir & "\Ярлыки\" & $aDesktopLnkFiles[$d], 1 + 8)
Next


Updated

Добавил выход из скрипта если на рабочем столе нет ярлыков :smile:
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
по строчкам
Код:
$search = FileFindFirstFile("*.*")

ищет только в той папке, из которой запускается скрипт. если хочешь чтобы искал именно на рабочем столе, надо
Код:
$search = FileFindFirstFile(@DesktopDir & "\*.*")


Код:
Global $Yar_Data = _
    StringSplit( _
        "Mozilla Firefox.lnk|Mozilla Firefox.lnk|Mozilla Firefox.lnk", "|")

честно скажу, не понял зачем создавать массив из одинаковых 3 + 1 элементов, причем вручную.

Код:
If  $file <> $Yar_Data Then

это условие будет выполняться всегда, ибо указатель на файл сравнивается с массивом и условием является отрицание их равенства - что всегда верно


Проблема!!! Скрипт работает только с системного диска.
Это тоже не понял, что значит "работает"? запускается? он должен запускаться с любого места.

Проблема!!! Незнаю как его остановить. (все копирует и ждет
whistle.gif
)
конечно ждет, условия завершения цикла нет.

За основу взял Help
если брал хелп, то надо было брать не кусок а весь кода, в частности вот эти строки
Код:
If @error Then ExitLoop


Updated
Ответили, раньше :smile:
Получается что Yar_Data - это массив из нужных элементов... вопрос снимается :D
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
kaster [?]
если хочешь чтобы искал именно на рабочем столе, надо
Код:
$search = FileFindFirstFile(@DesktopDir & "*.*")
Тоже неправильно, это найдёт только все папки и файлы начинающиеся с «Рабочий стол...» (в рус. локализации). Перед «*.*» нужен слеш.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
CreatoR сказал(а):
kaster [?]
если хочешь чтобы искал именно на рабочем столе, надо
Код:
$search = FileFindFirstFile(@DesktopDir & "*.*")
Тоже неправильно, это найдёт только все папки и файлы начинающиеся с «Рабочий стол...» (в рус. локализации). Перед «*.*» нужен слеш.
да. забыл поставить :(
 

XpycT

Скриптер
Сообщения
380
Репутация
133
kaster сказал(а):
Код:
If  $file <> $Yar_Data Then

это условие будет выполняться всегда, ибо указатель на файл сравнивается с массивом и условием является отрицание их равенства - что всегда верно
И при этом скрипт будет копировать в папку все файлы которые находять на рабочем столе :whistle:
 
Автор
W

wolk88

Новичок
Сообщения
12
Репутация
0
Ураааааааа :laugh: :laugh: :laugh: :laugh: :laugh:
ОГРОМНОЕ ВСЕМ СПАСИБО!!!!!!!!!
P/S
@DesktopDir лучше заменить на @DesktopCommonDir
 
Верх