Войти

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


Chezorezka
02-04-2019, 01:51
Добрый день форумчане.
Сам я не "але" в создании подобного рода скрипта,начальство сказало...Поэтому если буду нести всякую "ересь" не пинайте.
Имеется определенная структура папок и файлов,мне нужно создать полную копию этой структуры,но только в ярлыках,что бы все файлы в папках тоже были ярлыками.Проще говоря скопировать ярлыки папок и файлов внутри них.
Все файлы это PDFки. Подойдет что угодно,батник,скрипт,программа,вообще хоть что.Я гуглить замучился,никто кроме меня такой фигней не занимается...
Как можно сделать такой скрипт, что бы при его запуске,эта структура просто копировала ярлыки,и в то же время,если мне нужно будет через какое то время обновить ее,я просто запущу ее и она мне обновит ярлыки,это PDF архив и постоянно обновляется.
Win 10 pro
Структура такая:
-Архив(корневая директория)
---Главная папка (их более 500)
-----папка 1
--------папка 1
----------файл.PDF
----------файл.PDF
----------файл.PDF
----------файл.PDF
----------файл.PDF
----------файл.PDF
----------файл.PDF
----------файл.PDF
--------папка 2
----------файл.PDF
----------файл.PDF
----------файл.PDF
----------файл.PDF
----------файл.PDF
--------папка 3
--------папка 4
--------папка 5
--------папка 6
-----папка 2
--------папка 1
--------папка 2
--------папка 3
--------папка 4
-----папка 3
--------папка 1
--------папка 2
--------папка 3
--------папка 4
--------папка 5
-----папка 4
-----папка 5
-----папка 6
-----папка 7
-----папка 8
-----папка 9
-----папка 10
-----папка 11
-----папка 12
-----папка 13
-----папка 14
-----папка 15
и т.д

Chezorezka
05-04-2019, 05:48
Все походу вымерли?...Хоть дайте знак что тут еще есть люди...

Iska
05-04-2019, 08:21
Chezorezka, сделать можно будет. Но какова цель создания этих ярлыков? И почему именно ярлыков, а не, например, жёстких или символических ссылок?

megaloman
05-04-2019, 18:52
Chezorezka, @Echo Off
cls
Set "BoxIn=Z:\Box_Arc"
Set "Mask=*.pdf"
Set "BoxOut=Z:\Lnk.pdf"

rem If Not "%BoxOut:~3,1%"=="" 2>NUL Rd /S /Q "%BoxOut%"
Call :Folder "%BoxIn%" "%Mask%" "%BoxOut%"

FOR /F "usebackq delims=" %%i IN (`2^>nul Dir "%BoxIn%\" /S /B /A:D`) DO Call :Folder "%%i" "%Mask%" "%BoxOut%"
FOR /F "usebackq delims=" %%i IN (`2^>nul Dir "%BoxOut%" /B /A:D`) DO Call :Link "%BoxOut%\%%i.lnk" "%BoxOut%\%%i"
pause
Exit /B 0

:Folder
If Not Exist "%~3%~pnx1" (
If Exist "%~1\%~2" (
Md "%~3%~pnx1"
Call :Files %1 %2 "%~3%~pnx1"
)
)
Exit /B 0

:Files
FOR /F "usebackq delims=" %%j IN (`2^>nul Dir "%~1\%~2" /B /A:-D`) DO (
If Not Exist "%~3\%%j.lnk" Call :Link "%~3\%%j.lnk" "%~1\%%j"
)
Exit /B 0

:Link
@mshta vbscript:Execute("Set x=CreateObject(""WScript.Shell"").CreateShortcut("%1"):x.TargetPath="%2":x.Save():Close()")
Exit /B 0
Пропишите свои пути. Если надо всё пересоздать заново, уберите rem в выделенной строке,
при этом крайне опасно указывать в качестве выходной папки корневую папку диска, например, D:, особенно Если надо всё пересоздать заново. С диска всё будет удалено.
Вы не определились, куда поместить ярлык на верхнюю папку. Я поместил его в папку, прописанную в BoxOut. Можете его скопировать куда угодно.

mwz
05-04-2019, 19:00
И почему именно ярлыков, а не, например, жёстких или символических ссылок? »

Ответ был дан сразу: ,начальство сказало... » ;)

megaloman
05-04-2019, 22:30
Chezorezka, какова цель создания этих ярлыков? » А не проще ли прописать на папку с PDF доступ (атрибуты?) только для чтения. Безопасность будет обеспечена без выкрутасов с ярлыками. Начальству, конечно, виднее ...

mwz
05-04-2019, 22:48
А не проще ли прописать на папку с PDF доступ (атрибуты?) только для чтения. »

Мммм... Атрибуты папки вообще никак не влияют на возможность изменения и удаления файлов в папке: это не права безопасности...




© OSzone.net 2001-2012