Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2722
Благодарности: 1692

Профиль | Отправить PM | Цитировать


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. Можете его скопировать куда угодно.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 05-04-2019 в 22:21.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:52, 05-04-2019 | #4