0 / 0 / 1
Регистрация: 12.06.2016
Сообщений: 33
1

Переименование файлов в соответствии с текстовым файлом

21.11.2017, 23:38. Показов 2530. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В папке имеется N файлов и txt с N строчками. Задача: составить скрипт, который считывает строку, переименовывает файл, переходит к сл. строке и т д. Важно, чтобы переименование происходило в порядке даты изменения файлов (последним переименовывается файл, который изменялся последним). Помогите пожалуйста
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2017, 23:38
Ответы с готовыми решениями:

Рекурсивное переименование файлов, md5-хеш которых совпадает с md5-хешем, указанном в списке файлов
Есть файл из двух колонок md5-хеш и имя файла (краткое, с расширением, UTF-8). Есть каталог с...

Групповое переименование файлов
Надеюсь, что раздел выбрал правильно. Подскажите пожалуйста, как переименовать файлы вида ...

Пакетное переименование файлов
Есть файлы ___ нужно скрипт групового переименования файлов где меняеться местами только формат...

Пакетное переименование файлов
Возникла необходимость папку с большим кол-вом файлом переименовать 1,2,3,4,5..... Например фильмы...

8
1885 / 1107 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
22.11.2017, 10:26 2
Лучший ответ Сообщение было отмечено catch222 как решение

Решение

Цитата Сообщение от catch222 Посмотреть сообщение
В папке имеется N файлов и txt с N строчками. Задача: составить скрипт, который считывает строку, переименовывает файл, переходит к сл. строке и т д. Важно, чтобы переименование происходило в порядке даты изменения файлов (последним переименовывается файл, который изменялся последним)
PowerShell
1
2
3
4
5
6
7
8
9
[System.Collections.ArrayList]$names = gc C:\Temp\list.txt
foreach ($file in ls C:\Temp\_Files | ? {!$_.PSIsContainer} | sort LastWriteTime)
{
    if ($newName = $names | select -First 1)
    {
        ren $file.FullName -NewName ($newName + $file.Extension) -WhatIf
        $names.Remove($newName)
    }
}
1
0 / 0 / 1
Регистрация: 12.06.2016
Сообщений: 33
22.11.2017, 11:50  [ТС] 3
KDE777, в консоли пишет, что переименовал, а по факту ничего не происходит
0
1885 / 1107 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
22.11.2017, 11:52 4
Цитата Сообщение от catch222 Посмотреть сообщение
в консоли пишет, что переименовал, а по факту ничего не происходит
Если всё что написано в консоли вас устраивает, уберите ключ -WhatIf
0
0 / 0 / 1
Регистрация: 12.06.2016
Сообщений: 33
22.11.2017, 12:02  [ТС] 5
Цитата Сообщение от KDE777 Посмотреть сообщение
Если всё что написано в консоли вас устраивает, уберите ключ -WhatIf
Теперь работает. Вот только именует в кракозябры, если строка на русском
0
1885 / 1107 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
22.11.2017, 12:08 6
Цитата Сообщение от catch222 Посмотреть сообщение
Вот только именует в кракозябры, если строка на русском
Сохраните текстовый файл со списком в Unicode-формате, или попробуйте заменить 1 строчку на:

PowerShell
1
[System.Collections.ArrayList]$names = gc C:\Temp\list.txt -Encoding Default
0
0 / 0 / 1
Регистрация: 12.06.2016
Сообщений: 33
22.11.2017, 12:16  [ТС] 7
Цитата Сообщение от KDE777 Посмотреть сообщение
Сохраните текстовый файл со списком в Unicode-формате, или попробуйте заменить 1 строчку на:
Первое не помогло. при втором ошибка: Get-Content : Не удается привязать параметр "Encoding"...
0
1885 / 1107 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
22.11.2017, 12:28 8
Цитата Сообщение от catch222 Посмотреть сообщение
при втором ошибка: Get-Content : Не удается привязать параметр "Encoding"...
Значит у вас PowerShell 2.0

Сохраните текстовый файл со списком в кодировке "Юникод", с помощью блокнота Windows + поменяйте 1 строку на это:

PowerShell
1
[System.Collections.ArrayList]$names = gc C:\Temp\list.txt -Encoding Unicode
0
0 / 0 / 1
Регистрация: 12.06.2016
Сообщений: 33
22.11.2017, 12:31  [ТС] 9
Цитата Сообщение от KDE777 Посмотреть сообщение
Значит у вас PowerShell 2.0
Сохраните текстовый файл со списком в кодировке "Юникод", с помощью блокнота Windows + поменяйте 1 строку на это:
PowerShellВыделить код
1
[System.Collections.ArrayList]$names = gc C:\Temp\list.txt -Encoding Unicode
Не сработало. Сохранил txt с кодировкой Windows 1251 и сработало.
0
22.11.2017, 12:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2017, 12:31
Помогаю со студенческими работами здесь

Групповое переименование файлов средствами PowerShell 2.0
Здравствуйте, при переименовании файлов скрипт отрабатывает не со всеми форматами, выдает ошибку...

Массовое переименование файлов по заданному условию
Добрый день. Поймал вирус шифровальщик и он переименовал мои файлы. Антивирус вроде частично...

Переименование файлов в имена, взятые из XLSX-файла
Привет! Столкнулся с проблемой. Есть файл name.xlsx внутри которого одна колонка с полным именем...

Переименование и сортировка файлов в имена, взятые из txt-файла - PowerShell
Всем привет! Хочу сделать скрипт для автоматической сортировке видео (.mp4) и фото с дрона(.jpg)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru