forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Программное обеспечение / Software (http://forum.boolean.name/forumdisplay.php?f=164)
-   -   Автоматизация операций с файлами (http://forum.boolean.name/showthread.php?t=20386)

ABTOMAT 28.08.2016 00:32

Автоматизация операций с файлами
 
В-общем такая задача встала:

Есть папка Яндекс.Диска, внутри неё папка, скажем, OUT.
В ней лежит вчерашний файл foo.rar

Так вот каждый день мне нужно удалять вчерашний foo.rar

Папка оказывается пустая.

В неё я копирую папку 1 из одного места, папки 2 и 3 из другого места и файл 1 ещё откуда-нибудь. Пути этих файлов и папок известны и в рамках данной задачи не меняются, что задачу эту облегчает.

Потом из них всех делаю .rar-файл, т.е. свеженький foo.rar.
А потом файл 1, папки 1,2,3 удаляю. Остаётся только foo.rar (вернулись к тому, что было вначале).

Затем я из контекстного меню выбираю пункт Яндекс-Диска скопировать публичную ссылку, через какое-то время файл заливается, ссылка оказывается в буфере, и эту ссылку я отправляю куда положено.

====

Как вы уже догадались, я хочу это дело автоматизировать.
Сначала хотел сделать bat'ник.
Ну, копировать папки и файлы это просто.
А вот сделать rar (допустимо zip) сложнее.
Не нашёл вменяемой консольной софтины под винду, которая делает архив, и забил.
Винда, вроде как, сама умеет, но я почитал про канделябры, которые надо выписывать, и тоже забил.
Так что до выяснения, можно ли ссылку на ЯДиск скопировать, даже и не дошло.

====

И вот я недавно вспомнил, что теперь в Винде есть встроенный баш, в котором есть замечательный zip -r name dir, и вообще на Линуксе вся эта задача (кроме пункта про ЯД) не стоила бы и выеденного яйца.

Так вот, господа знающие, что там поподробнее с башем под виндой? Реально таким макаром через него сделать?

Или есть ли другие способы решить поставленную задачу?

Randomize 28.08.2016 07:21

Ответ: Автоматизация операций с файлами
 
У тебя же есть WinRAR? Или 7zip? У обоих есть консольные интерфейсы (см. офф сайт)

А почему не сделать на похепе cli утилиту - чому бы и нет, один фиг у тебя php интерпретатор пылится. Там тебе и zip и tar и язык знакомый с детства.

Единственное, может, я фигню советую, так как не работал с яндекс диском, но там же есть WebDav?

St_AnGer 28.08.2016 12:44

Ответ: Автоматизация операций с файлами
 
Цитата:

Сообщение от ABTOMAT (Сообщение 308139)
Не нашёл вменяемой консольной софтины под винду, которая делает архив, и забил.
Винда, вроде как, сама умеет, но я почитал про канделябры, которые надо выписывать, и тоже забил.
Так что до выяснения, можно ли ссылку на ЯДиск скопировать, даже и не дошло.

Заархивировать вообще не порблема, WinRar, как минимум, имеет консольный интерфейс.

По поводу ЯД. Есть у него WebDav, лично я им пользуюсь на своём серваке, бэкапы сайтов на ЯД выпихиваю. Очень удобно, а главное - всё из консоли. Так что с выгрузкой проблем не будет, не знаю только как ссылку глобальную получить.

Phantom 28.08.2016 23:38

Ответ: Автоматизация операций с файлами
 
Слово WebDav узнал только что впервые, на этот счёт ничего не скажу, но сегодня разбирался с Яндекс API (правда, дальше авторизации по OAuth чо-то не пошло, пока отложил), в списке API видел и Яндекс Диск, так что наверняка это всё реализуется (я использовал PHP). Один раз авторизовываешься, получаешь токен и он либо вечный, либо на очень долгое время (вроде от используемого API зависит). Я даже авторизацию через OAuth сделал в консольном PHP скрипте при помощи хитрожопого финта без использования web сервера. С rar архивами как-то работал, тоже не сразу нашёл подходящую консольную утилиту, но в итоге нашёл. К сожалению сейчас с ходу не вспомню какую именно. Но вообще обычно стараюсь работать с zip, потому что даже в 2016 году не все могут сходу rar распаковать, сталкивался с проблемами.

ABTOMAT 05.09.2016 12:55

Ответ: Автоматизация операций с файлами
 
В-общем в связи с некоторыми другими операциями мне понадобилось сделать в Юнити кнопку, которая их делает.

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 10 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

Ну, раз такая сложная штука уже делается кнопкой в Юнити, почему бы не пойти дальше и не заставить её же копировать файлы?
Тут обошлось без лишних операций: я просто WinRar'у консолью указываю какой архив создать (предварительно удалив старый) и кладу по очереди все файлы папки прямо в него, не копируя их никуда.

Конечно совсем шик был бы если бы у меня в буфере оказывалась ссылка на файл на Яндекс.Диске.
Но тут уже слишком сложно, не думаю, что это будет большая экономия времени.
Поэтому я сделал вот что: после создания архива открывается мне окно эксплорера с этим архивом, чтобы я мог уже по нему правой кнопкой кликнуть и ссылку скопировать. Думаю, на этом я остановлюсь и пойду автоматизировать другие вещи, куда более остро в этом нуждающиеся.

===

Печально, что нужно иметь на компе WinRar. Я бы хотел всё же обойтись средствами самой Винды, т.к. если я этот скрипт дам коллеге, ему тоже придётся иметь Винрар на компе.
И тут беда что я указываю путь к exe'шнику WinRar'а:
Код:

string archieverExePath = @"C:\Program Files\WinRAR\WinRAR.exe";
А если у чела на компе он в другой папке стоит? В коде менять? Неудобно. Конфиг только ради этого городить?
Можно как-то узнать путь к exe'шнику программы в Винде если знаешь её название? Блин, да, на Линуксе таких проблем нет.

Хотя вот упоминается, что есть чисто консольные версии винрара (уже, стало быть, не вин-)
http://cects.com/using-the-winrar-co...ls-in-windows/
Может, проще просто сложить их в папочку с моими тулзами (позволяет ли это лицензия? должно ли меня это волновать?)

Andvrok 05.09.2016 15:44

Ответ: Автоматизация операций с файлами
 
Положи архиватор к консольке своей (у 7зипа вообще одним файлом можно), распространяй вместе с ним, запускай относительным путем.

ABTOMAT 05.09.2016 16:02

Ответ: Автоматизация операций с файлами
 
Цитата:

Сообщение от Andvrok (Сообщение 308324)
Положи архиватор к консольке своей (у 7зипа вообще одним файлом можно), распространяй вместе с ним, запускай относительным путем.

У 7-зипа такой же консольный интерфейс?

7z.exe a -ep1 -r "C:\hui.rar" "C:\pizda.txt" "C:\MyFavouriteGaySexPhotosFolder"

Схавает нечто подобное?

St_AnGer 05.09.2016 16:05

Ответ: Автоматизация операций с файлами
 
Цитата:

Сообщение от ABTOMAT (Сообщение 308325)
У 7-зипа такой же консольный интерфейс?

7z.exe a -ep1 -r "C:\hui.rar" "C:\pizda.txt" "C:\MyFavouriteGaySexPhotosFolder"

Схавает нечто подобное?

На сколько я знаю - 7zip не умеет упаковывать *.rar, только распаковать может.

А упаковать что-то типа такого будет:
7z.exe a "C:\backup.7z" -r "C:\Backup"
Хрен знает как точно упаковать, с ним в консоли не работал, но вроде перечислять файлы можно в нём.

impersonalis 05.09.2016 16:31

Ответ: Автоматизация операций с файлами
 
Цитата:

Сообщение от ABTOMAT (Сообщение 308320)
А если у чела на компе он в другой папке стоит? В коде менять? Неудобно. Конфиг только ради этого городить?
Можно как-то узнать путь к exe'шнику программы в Винде если знаешь её название? Блин, да, на Линуксе таких проблем нет.

Переменные среды, же! В них ищутся бинарники (dll,exe, etc) после того, как не удалось найти объект с именем рядом/в стандартных местах/...

Цитата:

Сообщение от Andvrok (Сообщение 308324)
Положи архиватор к консольке своей (у 7зипа вообще одним файлом можно), распространяй вместе с ним, запускай относительным путем.

Лучшее решение. Да и, думаю, полно опенсорсных легковесных реализаций zip, для такой дистрибуции.

Andvrok 05.09.2016 16:35

Ответ: Автоматизация операций с файлами
 
Цитата:

Сообщение от impersonalis (Сообщение 308327)
Переменные среды, же! В них ищутся бинарники (dll,exe, etc) после того, как не удалось найти объект с именем рядом/в стандартных местах/...

7зип сам себе свою переменную не делает, насчёт винрара не скажу.

Phantom 06.09.2016 10:10

Ответ: Автоматизация операций с файлами
 
Так а какие объективные причины использовать rar? А под zip куча решений есть, в том числе открытых и под любую ОС.

impersonalis 06.09.2016 11:32

Ответ: Автоматизация операций с файлами
 
Рар это flac в мире архиваторов. Решение для компресофилов с налётом импринтинга. Чудовищное сжатие, имхо, дающее при современных технологиях копеечное преимущество, если только вы не сжимаете терабайты. Да и 7z, ЕМНИП, имеет показатели сжатия лучше, чем рар.
Для публичных сервисов, рар вместо zip - это как doc, вместо pdf.

1 http://forum.boolean.name/showthread.php?t=16435
2 http://forum.boolean.name/showthread.php?t=429

impersonalis 15.01.2017 23:25

Ответ: Автоматизация операций с файлами
 
У меня тоже назрела проблема с автоматизацией. Задача следующая:
есть список отобранных файлов, расположенных ниже директории disc1\foo\. Необходимо сверить хеши между файлами из этого списка и аналогичными файлами расположенными по адресу disc2\bar\, и составить отчёт (в произвольной форме - можно на экран) с результатами по каждому сравнению.

impersonalis 23.01.2017 14:48

Ответ: Автоматизация операций с файлами
 
Психанул @ закодил всё сам

Phantom 23.01.2017 17:49

Ответ: Автоматизация операций с файлами
 
Когда передо мной встают подобные задачи, я создаю в нужной папке или вовсе на рабочем столе новый PHP файл, трачу три минуты, чтобы написать там код, и задача решена. Потом файл отправляется либо в небытие, либо в папку с другими подобными файлами, чтобы в будущем можно было скопипастить оттуда кусочек кода на другой подобный PHP файл применительно к другой задаче.


Часовой пояс GMT +4, время: 01:15.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot