0 / 0 / 0
Регистрация: 19.02.2018
Сообщений: 74
|
|
1 | |
Создание ярлыков для папок из списка и перемещение ярлыков в заданную папку07.10.2018, 15:56. Показов 6335. Ответов 11
Метки нет (Все метки)
Здравствуйте! Уважаемые программисты, прошу помочь с автоматизацией следующей задачи.
Есть большая папка, содержащая вложенные папки с именами типа «оф123» Есть csv-файл с номерами (разделители-запятые, выгружен из Excel) Необходим скрипт, который бы запускался из большой папки, и 1. делает перебор всех вложенных папок, находит папки с нужными номерами из csv , 2. создает ярлык этой папки и 3. перемещает ярлык в указанную папку Пути к папкам и csv-файлу необходимо иметь возможность изменять прямо в скрипте.
0
|
07.10.2018, 15:56 | |
Ответы с готовыми решениями:
11
Перемещение ярлыков из подпапок в корневую папку с последующим удалением всех папок Создание тайлов-ярлыков для Windows 8 Восстановление ярлыков не удалённых папок Исчез текст и названия ярлыков, папок |
0 / 0 / 0
Регистрация: 19.02.2018
Сообщений: 74
|
|
08.10.2018, 18:45 [ТС] | 2 |
Нужна помощь. Неужели задача невыполнима?
0
|
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
|
||||||
08.10.2018, 19:37 | 3 | |||||
Сообщение было отмечено Abraxis2018 как решение
Решение
И что там разделяют "разделители-запятые" если в файле только номера?
Номер из csv-файла точно соответствует имени папки или является только его частью? Если частью, то уточните как именно он может находиться в имени папки? Чем яснее/точнее вы сформулируете задачу, тем быстрее вам помогут. Добавлено через 27 минут Допустим, есть файл: c:\temp\numbers.csv Кликните здесь для просмотра всего текста
Мы будем искать все поддиректории в c:\temp, у которых имена заканчиваются на любой из номеров (из numbers.csv) и в случае такого совпадения создавать ярлык на эту папку в c:\temp
1
|
0 / 0 / 0
Регистрация: 19.02.2018
Сообщений: 74
|
|
08.10.2018, 19:51 [ТС] | 4 |
1. Я указал тип файла, который использовался при сохранении номеров из Excel
2. Есть несколько вариантов имени, например "оф123" или "оф123м14". Но ищем только по первому номеру. 3. Я сформулировал задачу с большой степенью детализации, если необходимы уточнения, я их предоставлю. Спасибо за проявленный интерес к моей проблеме. Добавлено через 12 минут Почти то, что нужно, но 1. Создавать ярлык к найденной папке надо в другой папки, ее путь тоже надо прописать в коде 2. Можно ли if ($folder.Name -like "*$item") заменить на if ($folder.Name -like "*$item*"), номер это часть имени папки?
0
|
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
|
|||||||||||
08.10.2018, 20:00 | 5 | ||||||||||
Замечательно, а нужна его структура.
"находит папки с нужными номерами из csv" и "например "оф123" или "оф123м14. Но ищем только по первому номеру" - почувствуйте разницу. Об этом я и спрашивал, к сожалению, часто "формулируют задачу с большой степенью детализации", а после предложенного решения начинают добавлять вот такие нюансы, которые могут полностью поменять реализацию. Добавлено через 7 минут Добавьте в начало скрипта переменную $lnkfolder:
Код
PS C:\> 'оф123м14' -like '*14*' True
1
|
0 / 0 / 0
Регистрация: 19.02.2018
Сообщений: 74
|
|
08.10.2018, 20:11 [ТС] | 6 |
Проверил, все работает! Спасибо большое! Вы сэкономили мне большое количество рабочих часов!
0
|
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
|
||||||
08.10.2018, 20:17 | 7 | |||||
Сообщение было отмечено Abraxis2018 как решение
Решение
Но скрипт из ответа #3 не учитывает ваше же доп. условие "ищем только по первому номеру". Если учесть это и добавить "Создавать ярлык к найденной папке надо в другой папки", тогда получится так:
Кликните здесь для просмотра всего текста
0
|
0 / 0 / 0
Регистрация: 19.02.2018
Сообщений: 74
|
|
08.10.2018, 20:29 [ТС] | 8 |
Верно, так даже лучше. Спасибо!
0
|
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
|
|||||||||||
08.10.2018, 21:14 | 9 | ||||||||||
Ещё одно важное исправление - нужно обязательно заменить:
Код
PS C:\> $item = '12'; 'оф123м14' -match "^[\D]*$item" True PS C:\>$item = '12'; 'оф123м14' -match "^\D*$item(\D+|$)" False PS C:\> $item = '123'; 'оф123м14' -match "^\D*$item(\D+|$)" True
1
|
0 / 0 / 0
Регистрация: 19.02.2018
Сообщений: 74
|
|
20.10.2018, 18:42 [ТС] | 10 |
Здравствуйте, KDE777! Спасибо за Ваши дополнения, все опробовано в рабочей обстановке и отлично работает. Но должен еще раз обратиться за помощью.
Теперь ярлыки нужно сортировать не по одной, а по 19 папкам (файл csv для примера сортировки во вложении). Как правильно изменить код? Я добавил переменных $lnkfolder1-19 для разных папок, добавил -Delimiter ";" к $items = Import-Csv $csv_file и перекопировал 19 раз условие, изменяя select -expand на названия столбцов. Но сортировка теперь не работает как надо. А там более 30000 элементов.
0
|
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
|
||||||
22.10.2018, 12:29 | 11 | |||||
Правильно не код менять, а сразу писать что именно нужно.
0
|
0 / 0 / 0
Регистрация: 19.02.2018
Сообщений: 74
|
|
24.10.2018, 16:18 [ТС] | 12 |
KDE777, моя огромная благодарность за помощь!
0
|
24.10.2018, 16:18 | |
24.10.2018, 16:18 | |
Помогаю со студенческими работами здесь
12
Дублирование файлов и папок файлами в виде ярлыков Как избавиться от пунктирной рамки вокруг ярлыков и папок? Пропали ВСЕ иконки (значки) ВСЕХ папок, файлов, ярлыков в Windows 10 sapphfire x1600xt - изображение папок и ярлыков прокрашено наполовину, видео рябит Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |