Автор Тема: Как поменять названия файлов случайным образом  (Прочитано 424 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

Оффлайн mv6677 [?]

  • Новичок
  • *
  • Сообщений: 65
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Версия AutoIt: 3.3.1.,0

Описание:
Доброго времени суток.

Вопрос:
В папке C:\1\ - есть txt файлы, с названиями 1.txt, 2.txt, 3.txt и т.д.
Как нажатием на кнопку макроса - поменять названия файлов случайным образом - используя те же самые числовые данные?

В итоге - получится что файлы вроде бы те же самые... но их названия ПЕРЕТАСОВАНЫ. Например файл который при запуске макроса - назывался 2.txt - после срабатывания - будет называться 5.txt или 11.txt (в названии файлов - всегда только числа).

Названия файлов - могут быть только те, что существуют в папке на момент запуска скрипта. То есть - если в папке с книгой всего 11 текстовых файлов, то при переименовании - не может быть файла с названием 14 или 15. Названия также - не могут повторяться.
Примечания:


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться
« Последнее редактирование: Март 21, 2018, 02:07:01 от mv6677 »

Русское сообщество AutoIt


Оффлайн gunter123 [?]

  • Осваивающий
  • **
  • Сообщений: 76
  • Репутация: 30
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Вот, вроде работает. Скрипт надо закинуть в в папку с файлами
Код: AutoIt [Выделить]
#include <Array.au3>
#include <File.au3>

HotKeySet('s', _Swap)

While Sleep(10)
WEnd

Func _Swap()
   ConsoleWrite('Перемешали файлы')
   $aFileList = _FileListToArray(@ScriptDir, "*.txt")
   Dim $aList[UBound($aFileList) -1][2]

   For $i = 1 To $aFileList[0]
      $aList[$i -1][0] = $aFileList[$i]
   Next

   For $i = 1 To $aFileList[0]
      $iIndex = Random(1, UBound($aFileList) -1, 1)
      $aList[$i -1][1] = $aFileList[$iIndex]
      _ArrayDelete($aFileList, $iIndex)
   Next

   While UBound($aList) > 0
      If $aList[0][0] = $aList[0][1] Then
         _ArrayDelete($aList, 0)
         ContinueLoop
      EndIf
      If FileExists($aList[0][1]) Then
         FileMove($aList[0][1], 'temp' & $aList[0][1])
         $aList[_ArraySearch($aList, $aList[0][1])][0] = 'temp' & $aList[0][1]
      EndIf
      FileMove($aList[0][0], $aList[0][1], 1)
      _ArrayDelete($aList, 0)
   WEnd
EndFunc

Is it future or is it past?

Оффлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2646
  • Репутация: 448
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
мой вариант-пример.
(нажмите для показа/скрытия)
Были времена, когда солнце было ярче, трава зеленее, а водка сорокоградуснее

Помечен как лучший ответ пользователем mv6677 Отправлен Март 21, 2018, 23:43:58

Оффлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 323
  • Репутация: 78
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Код: AutoIt [Выделить]
#include <Array.au3>
#include <File.au3>

Local $sPath = "C:\1"

Local $aFileList = _FileListToArray($sPath, "*.txt", $FLTA_FILES), $aOutList = $aFileList
If @error Then Exit MsgBox(0, "Ошибка", "Файлы не найдены")

_ArrayShuffle($aOutList, 1)
For $i = 1 To $aFileList[0]
    FileMove($sPath & "\" & $aFileList[$i], $sPath & "\" & $aOutList[$i] & ".tmp")
Next
For $i = 1 To $aFileList[0]
    FileMove($sPath & "\" & $aOutList[$i] & ".tmp", $sPath & "\" & $aOutList[$i])
Next


Русское сообщество AutoIt

Re: Как поменять названия файлов случайным образом
« Ответ #3 Отправлен: Март 21, 2018, 16:19:34 »

Оффлайн mv6677 [?]

  • Новичок
  • *
  • Сообщений: 65

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Спасибо

Русское сообщество AutoIt

Re: Как поменять названия файлов случайным образом
« Ответ #4 Отправлен: Март 21, 2018, 23:44:23 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
4 Ответов
3710 Просмотров
Последний ответ Январь 05, 2010, 23:58:49
от symboss
1 Ответов
3887 Просмотров
Последний ответ Апрель 07, 2010, 18:06:20
от madmasles
4 Ответов
4094 Просмотров
Последний ответ Февраль 10, 2011, 13:49:47
от Otter
1 Ответов
2209 Просмотров
Последний ответ Октябрь 26, 2012, 18:27:00
от AZJIO
26 Ответов
6113 Просмотров
Последний ответ Июнь 22, 2013, 14:36:04
от CreatoR
7 Ответов
2228 Просмотров
Последний ответ Август 13, 2013, 13:47:16
от ---Zak---
1 Ответов
1266 Просмотров
Последний ответ Ноябрь 08, 2013, 15:29:51
от InnI
1 Ответов
800 Просмотров
Последний ответ Май 07, 2014, 17:11:16
от InnI
6 Ответов
1373 Просмотров
Последний ответ Июль 25, 2015, 13:22:43
от Yashied
6 Ответов
1868 Просмотров
Последний ответ Сентябрь 21, 2015, 12:50:29
от joiner