Что нового

Переместить все файлы из папки кроме созданных в текущий день.

uman

Новичок
Сообщения
25
Репутация
0
Помогите новичку:
Как переместить все файлы из папки, кроме созданных в текущий день?
Заранее спасибо.
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Попробуй так
Код:
#include 'array.au3'
#include 'file.au3'
$source=''; папка где ищем
$dest=''; папка куда перемещаем файлы, должна существовать
$file=_FileListToArray($source,'*',1)
$day=@MDAY
For $i=1 To $file[0]
	$tim=FileGetTime($source &'\'&$file[$i]&'',1)
	If $tim[2]<>$day Then FileMove($source &'\'&$file[$i]&'',$dest)
Next
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
uman,
ИМХО, так корректней.
Код:
#include <File.au3>

$sDirNew = @ScriptDir & '\DirNew' ;папка в которой проверяем файлы
$sDirOld = @ScriptDir & '\DirOld' ;папка в которую перемещаем файлы
$sMask = '*' ;можно задать маску, например $sMask = '*.txt'
$iCount = 0
$sDate = @YEAR & @MON & @MDAY

$aFiles = _FileListToArray($sDirNew, $sMask, 1)
If @error Then
	MsgBox(16, 'Error № ' & @error, '_FileListToArray')
	Exit
EndIf
For $i = 1 To $aFiles[0]
	$sTime = FileGetTime($sDirNew & '\' & $aFiles[$i], 1, 1)
	If @error Then ContinueLoop
	If StringLeft($sTime, 8) <> $sDate Then
		If FileMove($sDirNew & '\' & $aFiles[$i], $sDirOld & '\' & $aFiles[$i], 9) Then $iCount += 1
	EndIf
Next
MsgBox(64, 'Info', 'Переместили файлов: ' & $iCount)
 
Автор
U

uman

Новичок
Сообщения
25
Репутация
0
Спасибо sngr, РАБОТАЕТ!!! А вот со скриптом от madmasles у меня проблема. Скрипт завершается по @error с MsgBox(16, 'Error', '_FileListToArray'). Сижу, ищу где проблема, но с моим опытом это надолго.
 
Автор
U

uman

Новичок
Сообщения
25
Репутация
0
#include <File.au3>

$sDirNew = @ScriptDir & 'D:\AutoIt\project\sourse' ;папка в которой проверяем файлы
$sDirOld = @ScriptDir & 'D:\AutoIt\project\out' ;папка в которую перемещаем файлы

...
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
uman,
Я добавил в свой скрипт в MsgBox номер ошибки. Какой номер ошибки?

PS
Напишите весь скрипт, который выдает ошибку. (Только в тегах AutoIt).
 
Автор
U

uman

Новичок
Сообщения
25
Репутация
0
1


Добавлено:
Сообщение автоматически объединено:

Код:
#include <File.au3>

$sDirNew = @ScriptDir & 'D:\AutoIt\project\sourse' ;папка в которой проверяем файлы
$sDirOld = @ScriptDir & 'D:\AutoIt\project\out' ;папка в которую перемещаем файлы
$sMask = '*' ;можно задать маску, например $sMask = '*.txt'
$iCount = 0
$sDate = @YEAR & @MON & @MDAY

$aFiles = _FileListToArray($sDirNew, $sMask, 1)
If @error Then
    MsgBox(16, 'Error № ' & @error, '_FileListToArray')
    Exit
EndIf
For $i = 1 To $aFiles[0]
    $sTime = FileGetTime($sDirNew & '\' & $aFiles[$i], 1, 1)
    If @error Then ContinueLoop
    If StringLeft($sTime, 8) <> $sDate Then
        If FileMove($sDirNew & '\' & $aFiles[$i], $sDirOld & '\' & $aFiles[$i], 9) Then $iCount += 1
    EndIf
Next
MsgBox(64, 'Info', 'Переместили файлов: ' & $iCount)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
uman,
Уберите в Ваших значениях $sDirNew и $sDirOld @ScriptDir & .
Код:
MsgBox(64, 'Info', @ScriptDir & 'D:\AutoIt\project\sourse')
MsgBox(64, 'Info', 'D:\AutoIt\project\sourse')


Нарветесь на неприятность. Пользуйтесь тегом AutoIt.
 
Автор
U

uman

Новичок
Сообщения
25
Репутация
0
Извините, но я не понял, что нужно исправить.


Добавлено:
Сообщение автоматически объединено:

Код:
#include <File.au3>

$sDirNew ='D:\AutoIt\project\sourse' ;папка в которой проверяем файлы
$sDirOld ='D:\AutoIt\project\out' ;папка в которую перемещаем файлы
$sMask = '*' ;можно задать маску, например $sMask = '*.txt'
$iCount = 0
$sDate = @YEAR & @MON & @MDAY

$aFiles = _FileListToArray($sDirNew, $sMask, 1)
If @error Then
    MsgBox(16, 'Error № ' & @error, '_FileListToArray')
    Exit
EndIf
For $i = 1 To $aFiles[0]
    $sTime = FileGetTime($sDirNew & '\' & $aFiles[$i], 1, 1)
    If @error Then ContinueLoop
    If StringLeft($sTime, 8) <> $sDate Then
        If FileMove($sDirNew & '\' & $aFiles[$i], $sDirOld & '\' & $aFiles[$i], 9) Then $iCount += 1
    EndIf
Next
MsgBox(64, 'Info', 'Переместили файлов: ' & $iCount)



Добавлено:
Сообщение автоматически объединено:

Пардонче! Ступил я. Исправил.


Добавлено:
Сообщение автоматически объединено:

Работает!!!! СПАСИБО madmasles!!!!!
 
Верх