Войти

Показать полную графическую версию : Пакетное присвоения файлам жестких ссылок


Ogurok Alex
10-06-2016, 10:23
Здравствуйте! Помогите пожалуйста написать скрипт для того чтобы из текстового файла 1.txt в котором указаны пути к файлам можно было присвоить жесткие ссылки на файл путь к которому находятся в 2.txt

Не знаю или правильно объясняю но в итоге должно получится так что я нахожу поиском тотал коммандер файлы по маске,вывожу их на панель и после редактирования сохраняю в текстовый файл 1.txt после чего ищу путь к файлу который будет выступать исходников для файлов в данном списке и помещаю путь к нему в текстовый файл 2.txt после чего запускаю батник и он присваивает жесткие ссылки,чтобы когда произойдут изменения в файле исходнике менялись и файлы по жестким ссылкам.

greg zakharov
10-06-2016, 11:19
Как выглядят файлы 1.txt и 2.txt: просто списки или в одном список, а во втором данные по типу CSV, как данные из одного файла должны сопоставляться сданными из другого файла? Если язык решения любой, то подойдет ли PowerShell?

Iska
10-06-2016, 14:13
Не знаю или правильно объясняю »
Ogurok Alex, попробуйте для начала хотя бы расставить запятые.

Ogurok Alex
10-06-2016, 15:17
Как выглядят файлы 1.txt и 2.txt: просто списки или в одном список, а во втором данные по типу CSV, как данные из одного файла должны сопоставляться сданными из другого файла? Если язык решения любой, то подойдет ли PowerShell?

Было бы не плохо если бы это был бы bat файл.
Примеры списков отправлю вечером. Но в обоих файлах будут списки скопированные пути к файлам из тотал коммандера например.
Списки наверное придется делать в ручную в обеих файлах.
А что вы имеете ввиду на счет сопоставления? Простите за глупые вопросы, просто не знаю совсем ничего о программировании.

Не знаю или правильно объясняю »
Ogurok Alex, попробуйте для начала хотя бы расставить запятые.
Спасибо за совет!)

greg zakharov
10-06-2016, 17:37
Ogurok Alex, простейшее сопоставление: первая строка файла А соответсвует первой строке файла В.
Было бы не плохо если бы это был бы bat файл.А если PowerShell скомбинированный с батом (проще хардлинки клепать)? Или все же чистый cmd?

Ogurok Alex
11-06-2016, 00:41
Ogurok Alex, простейшее сопоставление: первая строка файла А соответсвует первой строке файла В.
А если PowerShell скомбинированный с батом (проще хардлинки клепать)? Или все же чистый cmd?

Мне главное чтобы получилось сделать,а на чем оно будет это уже упустим.
Я попытаюсь объяснить для чего я это хочу сделать.может вы мне по другому посоветует?
У меня есть файловое хранилище,в нем папки с пдф и тиф файлами. Каждая папка это изделие. Так вот,в этих папках хранятся одинаковые файлы но с измененным названием. Изделия набираются из набора чертежей.так же есть папка исходник,в которой работают конструктора. При изменении файлов в папке исходнике нужно чтобы менялись все связанные с ними файлы в папках изделиях.вопрос в том, как связать эти все файлы,темболее что они находятся под другим названием и у них общий только корень названия?

Iska
11-06-2016, 10:30
Я бы тупо использовал Far Manager для создания жёстких ссылок и с одновременным переименованием (Alt-F6).

При изменении файлов в папке исходнике нужно чтобы менялись все связанные с ними файлы в папках изделиях. »
Вы ведь понимаете, что изменение в любом месте, а не только в «папке исходнике», отразится на содержимом.

Foreigner
11-06-2016, 14:08
Так вроде нельзя с одного существующего файла сделать ссылку на другой существующий файл? Проще наверное заново создать дерево проектов, в котором на мастер-каталог будут ссылаться файлы в папках-проектах. Или вообще создать связанные каталоги (в этом случае будут отличаться названия папок, а не файлов).


Допустим есть каталог master, создаем каталоги для проектов project_1 и project_2 и создаем в них жесткие ссылки на файлы в каталоге master

@echo off
setlocal

2>nul md project_1;project_2
pushd master

for %%i in (*.pdf *.tiff) do (

mklink /h "..\project_1\qwerty%%~xi" "%%i"
mklink /h "..\project_2\test%%~xi" "%%i"

)

popd


Но, как заметили выше, если один чел напортачит, то тогда пострадает весь проект, включая исходники.

Ogurok Alex
11-06-2016, 19:41
Я бы тупо использовал Far Manager для создания жёстких ссылок и с одновременным переименованием (Alt-F6).

При изменении файлов в папке исходнике нужно чтобы менялись все связанные с ними файлы в папках изделиях. »
Вы ведь понимаете, что изменение в любом месте, а не только в «папке исходнике», отразится на содержимом.

Я пробовал фар менеджер,хорошая вещь. Одно плохо,что файлов десятки тысяч,и если я не найду выход как с этим можно пакетно бороться то прийдеться делать руками...

Так вроде нельзя с одного существующего файла сделать ссылку на другой существующий файл? Проще наверное заново создать дерево проектов, в котором на мастер-каталог будут ссылаться файлы в папках-проектах. Или вообще создать связанные каталоги (в этом случае будут отличаться названия папок, а не файлов).


Допустим есть каталог master, создаем каталоги для проектов project_1 и project_2 и создаем в них жесткие ссылки на файлы в каталоге master

@echo off
setlocal

2>nul md project_1;project_2
pushd master

for %%i in (*.pdf *.tiff) do (

mklink /h "..\project_1\qwerty%%~xi" "%%i"
mklink /h "..\project_2\test%%~xi" "%%i"

)

popd


Но, как заметили выше, если один чел напортачит, то тогда пострадает весь проект, включая исходники.

Дело в том что названия файлов внутри проектов меняют намеренно, им так удобнее потом искать...
Наверное все-таки придется делать руками.

Уважаемые,если все же у кого-то появятся еще какие-то мысли, рад буду выслушать!
Спасибо всем за помощь!
Если найду какое-то решение то обязательно напишу сюда.




© OSzone.net 2001-2012