Что нового

Send пути и имени файлов в случайном порядке

Сообщения
36
Репутация
-2
Версия AutoIt: 3.

Описание:
Помогите, пожалуйста.

В папке находится n файлов. Как я могу Send их имена с путем к файлу и разрешением файла через каждые десять секунд по одному в случайном порядке?
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Так ?:
Код:
#include <File.au3>

HotKeySet('{ESC}', '_Exit')

$Dir = 'C:\Windows\System32\'
$Files = _FileListToArray($Dir, '*', 1)
While 1
	Sleep(10000)
	Send($Dir & $Files[Random(1, $Files[0], 1)])
WEnd

Func _Exit()
	Exit
EndFunc
 
Автор
H
Сообщения
36
Репутация
-2
Zaramot, спасибо большое.
А Вы можете сделать чтобы он также посылал рандомно имена файлов, но без повторений и после посыла всех имен ничего не делал?

И реально ли чтобы он брал имена файлов еще и из подпапок этой папки?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
hohmuch,
Код:
Opt('MustDeclareVars', 1)

Global $sDir = @ScriptDir & '\0', $aFiles, $sString = '|', $iRand

$aFiles = _FileSearch($sDir, '*', 1)
If @error Then Exit
ConsoleWrite('Files: ' & $aFiles[0] & @LF)
For $i = 1 To $aFiles[0]
	$iRand = Random(1, $aFiles[0], 1)
	While 1
		$iRand = Random(1, $aFiles[0], 1)
		If Not StringInStr($sString, '|' & $iRand & '|') Then
			$sString &= $iRand & '|'
			ExitLoop
		EndIf
		Sleep(2)
	WEnd
	;Send($aFiles[$iRand])
	ConsoleWrite($i & @TAB & $iRand & @TAB & $aFiles[$iRand] & @LF)
	Sleep(10000)
Next
MsgBox(64, 'Info', 'Кончились файлы :)')



Func _FileSearch($sPath, $sFileMask = "*", $iFlag = 0, $iSubDir = 1, $iSort = 0)
	;CreatoR; http://autoit-script.ru/index.php/topic,8266.msg55775
	Local $sOutBin, $sOut, $aOut, $sRead, $hDir, $sAttrib, $sFiles, $aMasks

	If Not StringInStr(FileGetAttrib($sPath), "D") Then
		Return SetError(1, 0, 0)
	EndIf
	If $iSubDir = 1 Then
		$sAttrib &= ' /S'
	EndIf
	If $iSort = 1 Then
		$sAttrib &= ' /O:N'
	EndIf
	Switch $iFlag
		Case 1
			$sAttrib &= ' /A-D'
		Case 2
			$sAttrib &= ' /AD'
		Case Else
			$sAttrib &= ' /A'
	EndSwitch
	$sOut = StringToBinary('0' & @CRLF, 2)
	$sPath = StringRegExpReplace($sPath, '\\+$', '')
	$sFileMask = StringRegExpReplace($sFileMask, '^;+|;+$', '')
	$sFileMask = StringRegExpReplace($sFileMask, ';{2,}', ';')
	$aMasks = StringSplit($sFileMask, ';')
	For $i = 1 To $aMasks[0]
		If StringStripWS($aMasks[$i], 8) = "" Then
			ContinueLoop
		EndIf
		$sFiles &= '"' & $sPath & '\' & $aMasks[$i] & '"'
		If $i < $aMasks[0] Then
			$sFiles &= ';'
		EndIf
	Next
	$hDir = Run(@ComSpec & ' /U /C DIR ' & $sFiles & ' /B' & $sAttrib, @SystemDir, @SW_HIDE, 6)
	While 1
		$sRead = StdoutRead($hDir, False, True)
		If @error Then
			ExitLoop
		EndIf
		If $sRead <> "" Then
			$sOut &= $sRead
		EndIf
		Sleep(10)
	WEnd
	$aOut = StringRegExp(BinaryToString($sOut, 2), '[^\r\n]+', 3)
	If @error Or UBound($aOut) < 2 Then
		Return SetError(2, 0, 0)
	EndIf
	$aOut[0] = UBound($aOut) - 1
	Return $aOut
EndFunc   ;==>_FileSearch
 
Автор
H
Сообщения
36
Репутация
-2
madmasles
Сорри, а как прописать свою папку?
 
Автор
H
Сообщения
36
Репутация
-2
madmasles

Выдало вот такую ошибку
Код:
>"C:\Program Files\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "d:\Miscel\Pics\МОИ СКРИПТЫ\test.au3"    
D:\Miscel\Pics\??? ???????\test.au3 (4) : ==> No variable given for "Dim", "Local", "Global", "Struct" or "Const" statement.:
Global $sDir = 'd:\Miscel\Pics\Old comp\',
Global $sDir = 'd:\Miscel\Pics\Old comp\',^ ERROR
>Exit code: 1    Time: 0.211
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Автор
H
Сообщения
36
Репутация
-2
Kaster

Спасибо. Вышел @error вроде.
Код:
>"C:\Program Files\1\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "d:\Miscel\Pics\МОИ СКРИПТЫ\test.au3"    
>Exit code: 0    Time: 0.176
 
Автор
H
Сообщения
36
Репутация
-2
---Zak---
Код:
Opt('MustDeclareVars', 1)

;...
Global $sDir = 'd:\Miscel\Pics\Old comp\';...
;...

Global $sDir = @ScriptDir & '\0', $aFiles, $sString = '|', $iRand

$aFiles = _FileSearch($sDir, '*', 1)
If @error Then Exit
ConsoleWrite('Files: ' & $aFiles[0] & @LF)
For $i = 1 To $aFiles[0]
    $iRand = Random(1, $aFiles[0], 1)
    While 1
        $iRand = Random(1, $aFiles[0], 1)
        If Not StringInStr($sString, '|' & $iRand & '|') Then
            $sString &= $iRand & '|'
            ExitLoop
        EndIf
        Sleep(2)
    WEnd
    ;Send($aFiles[$iRand])
    ConsoleWrite($i & @TAB & $iRand & @TAB & $aFiles[$iRand] & @LF)
    Sleep(10000)
Next
MsgBox(64, 'Info', 'Кончились файлы :)')



Func _FileSearch($sPath, $sFileMask = "*", $iFlag = 0, $iSubDir = 1, $iSort = 0)
    ;CreatoR; http://autoit-script.ru/index.php/topic,8266.msg55775
    Local $sOutBin, $sOut, $aOut, $sRead, $hDir, $sAttrib, $sFiles, $aMasks

    If Not StringInStr(FileGetAttrib($sPath), "D") Then
        Return SetError(1, 0, 0)
    EndIf
    If $iSubDir = 1 Then
        $sAttrib &= ' /S'
    EndIf
    If $iSort = 1 Then
        $sAttrib &= ' /O:N'
    EndIf
    Switch $iFlag
        Case 1
            $sAttrib &= ' /A-D'
        Case 2
            $sAttrib &= ' /AD'
        Case Else
            $sAttrib &= ' /A'
    EndSwitch
    $sOut = StringToBinary('0' & @CRLF, 2)
    $sPath = StringRegExpReplace($sPath, '\\+$', '')
    $sFileMask = StringRegExpReplace($sFileMask, '^;+|;+$', '')
    $sFileMask = StringRegExpReplace($sFileMask, ';{2,}', ';')
    $aMasks = StringSplit($sFileMask, ';')
    For $i = 1 To $aMasks[0]
        If StringStripWS($aMasks[$i], 8) = "" Then
            ContinueLoop
        EndIf
        $sFiles &= '"' & $sPath & '\' & $aMasks[$i] & '"'
        If $i < $aMasks[0] Then
            $sFiles &= ';'
        EndIf
    Next
    $hDir = Run(@ComSpec & ' /U /C DIR ' & $sFiles & ' /B' & $sAttrib, @SystemDir, @SW_HIDE, 6)
    While 1
        $sRead = StdoutRead($hDir, False, True)
        If @error Then
            ExitLoop
        EndIf
        If $sRead <> "" Then
            $sOut &= $sRead
        EndIf
        Sleep(10)
    WEnd
    $aOut = StringRegExp(BinaryToString($sOut, 2), '[^\r\n]+', 3)
    If @error Or UBound($aOut) < 2 Then
        Return SetError(2, 0, 0)
    EndIf
    $aOut[0] = UBound($aOut) - 1
    Return $aOut
EndFunc   ;==>_FileSearch
 
Автор
H
Сообщения
36
Репутация
-2
Помогите пожалуйста с этим, если с тем мегаскриптом не помочь ( я его даже запустить не могу но никто не пишет в теме).
Код:
#include <Array.au3>
#include <File.au3>

For $i = 0 To 99
    $iFlag = Random(0,1,0)
    ConsoleWrite("line 1" & @LF) ; Line 1
    ConsoleWrite("line 2" & @LF) ; Line 2
    If $iFlag > 0.7 Then


  $Dir = 'C:\Windows\System32\'
$Files = _FileListToArray($Dir, '*', 1)
    Sleep(1000)
ConsoleWrite($Dir & $Files[Random(1, $Files[0], 1)])


    EndIf
    ConsoleWrite("line 5" & @LF) ; Line 5

Next

Нужно чтобы засылаемые имена файлов НЕ повторялись.
 

winstan

Эксплотатор)
Сообщения
406
Репутация
79
Код:
#include <File.au3>
#include <Array.au3>

HotKeySet('{ESC}', '_Exit')

$Dir = 'D:\Program Files\'
$Files = _FileListToArray($Dir, '*', 1)
While 1
;~     Sleep(10000)
	if $Files[0]=1 Then
		$id=1
	Else
		$id=Random(1, $Files[0], 1)
	EndIf

;~     Send($Dir & $Files[$id])
	ConsoleWrite($Files[$id]& '-'&$Files[0]&'-'&$id&@LF)
	_ArrayDelete ( $Files,$id)
	$Files[0]=UBound($Files)-1
	if $Files[0]=0 Then Exit
WEnd

Func _Exit()
    Exit
EndFunc
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Нужно чтобы засылаемые имена файлов НЕ повторялись.
Попробуйте для этого использовать _RandomEx вместо Random в моем 1 посте:
http://autoit-script.ru/index.php/topic,6462.0.html
 
Верх