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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Составить список файлов из папки в заданном виде

Ответить
Настройки темы
CMD/BAT - [решено] Составить список файлов из папки в заданном виде

Новый участник


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

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


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

В папке есть n количество файлов (оно всегда растет)

Необходимо в txt файле создать текст следующего формата:

Range("A1").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="P:\files\название файла с расширением" _
, TextToDisplay:="P:\files\название файла с расширением"
Range("A2").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="P:\files\название второго файла с расширением" _
, TextToDisplay:="P:\files\название второго файла с расширением"
.......................
Range("An").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="P:\files\название n-ого файла с расширением" _
, TextToDisplay:="P:\files\название n-ого файла с расширением"

В этом случае "P:\files\" константа, которую можно задавать в зависимости от расположения файла перед запуском батника

ЛИБО

Range("A1").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="название файла с расширением и путем к нему" _
, TextToDisplay:="название файла с расширением и путем к нему"
Range("A2").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="название второго файла с расширением и путем к нему" _
, TextToDisplay:="название второго файла с расширением и путем к нему"
.............................
Range("An").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="название n-ого файла с расширением и путем к нему" _
, TextToDisplay:="название n-ого файла с расширением и путем к нему"


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

Отправлено: 15:53, 28-09-2020

 

Ветеран


Contributor


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

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


Цитата burolf:
Я хочу потом данный текст скопировать в Макрос excel и создать файл с гиперссылками на файлы в папке, в которой этот батник будет запущен. »
Это особо циничное извращение , но вот решение, как Вы этого хотели:
Код: Выделить весь код
@Echo Off
cls
>nul Chcp 1251

	Set "BoxIn=Z:\Box_In\У попа была собака"
	Set "Mask=*.*"

	Set "FileOut=Z:\Бред сивой кобылы.txt"

	Set /A N=0
	>"%FileOut%" (FOR /F "usebackq delims=" %%f IN (`2^>nul Dir /B /A:-D "%BoxIn%\%Mask%"`) DO (
		Call Set /A N+=1
		Call Echo ActiveSheet.Hyperlinks.Add Anchor:=Range^("A%%N%%"^), Address:="%BoxIn%\%%f", TextToDisplay:="%BoxIn%\%%f"
	))
pause
Exit /B
Батник сохранить в 1251 кодировке
Вот макрос Excel для создания в ячейках гиперссылок на файлы в указанной папке безо всяких txt
Код: Выделить весь код
Sub DirGiper()

MyDir = "Z:\Box_In\У попа была собака"
MyMask = "^.*\..*$"

Set Reg = CreateObject("VBScript.RegExp")
Reg.IgnoreCase = True
Reg.Pattern = MyMask

With CreateObject("Scripting.FileSystemObject")
    Set Files = .GetFolder(MyDir).Files
    
    N = 0
    For Each File In Files
        Filename = File.Path
        If Reg.Test(Filename) Then
            N = N + 1
            ActiveSheet.Hyperlinks.Add Anchor:=Range("A" + CStr(N)), Address:=Filename, TextToDisplay:=Filename
        End If
    Next
End With
MsgBox "Done"

End Sub
Вот VBS-скрипт (создать файл с расширением .vbs в 1251 кодировке и выполнить его), и никакого левого txt-файла и ручной работы не потребуется
Код: Выделить весь код
MyDir = "Z:\Box_In\У попа была собака"
MyMask = "^.*\..*$"

Set Reg = CreateObject("VBScript.RegExp")
Reg.IgnoreCase = True
Reg.Pattern = MyMask

Set Files = CreateObject("Scripting.FileSystemObject").GetFolder(MyDir).Files

With CreateObject("Excel.Application")
	.Visible = True
	.Workbooks.Add
    
    	N = 0
	For Each File In Files
		Filename = File.Path
		If Reg.Test(Filename) Then
			N = N + 1
			Call .ActiveSheet.Hyperlinks.Add(.Range("A" + CStr(N)), Filename)
		End If
	Next
End With
Естественно, в любом решении надо прописать свои пути.

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


Последний раз редактировалось megaloman, 29-09-2020 в 23:27.

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

Отправлено: 22:30, 29-09-2020 | #11



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


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

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


Друзья! Спасибо огромное за помощь! Первый предложенный вариант действительно работает, просто надо было обновиться. Но хотелось бы выделить пользователя megaloman он предложил самый точный вариант соответствующий ТЗ и кроме того добавил самый адекватный и логически правильный вариант решения данной проблемы! Его макрос работает. Всем рекомендую! Спасибо ресурсу за возможность решения моей проблемы так быстро!

Отправлено: 12:09, 02-10-2020 | #12


Новый участник


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

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


[post]Вот макрос Excel для создания в ячейках гиперссылок на файлы в указанной папке безо всяких txt[post]

А как бы сделать чтобы после запуска данного макроса в результате в ячейке отображался не путь к папке, а что-то вроде кнопки или слово "ССЫЛКА" и ячейка подсвечивалась каким-либо цветом, к примеру нежно зеленым.

Отправлено: 12:48, 02-10-2020 | #13


Ветеран


Contributor


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

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


после запуска данного макроса в результате в ячейке отображался не путь к папке, а что-то вроде кнопки или слово "ССЫЛКА" и ячейка подсвечивалась каким-либо цветом, к примеру нежно зеленым
Код: Выделить весь код
Sub DirGiper0()

MyDir = "Z:\Box_In\У попа была собака"
MyMask = "^.*\..*$"

Set Reg = CreateObject("VBScript.RegExp")
Reg.IgnoreCase = True
Reg.Pattern = MyMask

With CreateObject("Scripting.FileSystemObject")
    Set Files = .GetFolder(MyDir).Files
    
    N = 0
    For Each File In Files
        Filename = File.Path
        If Reg.Test(Filename) Then
            N = N + 1
            ActiveSheet.Hyperlinks.Add Anchor:=Range("A" + CStr(N)), Address:=Filename, TextToDisplay:="Ссылка"
            
            With Range("A" + CStr(N))
                With .Font
                    .FontStyle = "полужирный курсив"
                End With
                With .Interior
                    .Pattern = xlSolid
                    .Color = 12314553
                End With
                With .Borders(xlEdgeLeft)
                    .LineStyle = xlContinuous
                    .Weight = xlMedium
                End With
                With .Borders(xlEdgeTop)
                    .LineStyle = xlContinuous
                    .Weight = xlMedium
                End With
                With .Borders(xlEdgeBottom)
                    .LineStyle = xlContinuous
                    .Weight = xlMedium
                End With
                With .Borders(xlEdgeRight)
                    .LineStyle = xlContinuous
                    .ColorIndex = 0
                    .TintAndShade = 0
                    .Weight = xlMedium
                End With
            End With
        End If
    Next
End With
MsgBox "Done"
End Sub

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


Последний раз редактировалось megaloman, 02-10-2020 в 15:31.

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

Отправлено: 15:16, 02-10-2020 | #14



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Составить список файлов из папки в заданном виде

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - копирования файлов из исходной папки в папки получатели согласно txt.файлу sevan_k Скриптовые языки администрирования Windows 3 12-06-2020 18:07
CMD/BAT - [решено] Нужно составить список файлов с определённым расширением и загонял его в TXT i-Lex Скриптовые языки администрирования Windows 4 28-02-2012 06:36
C/C++ - список файлов из папки - в листБокс Voffka123 Программирование и базы данных 1 18-05-2010 15:50
Помогите составить список всяких проблем с компами mitiya Флейм 12 28-04-2010 21:15
Список файлов при копировании папки i386 winxp rgsx Автоматическая установка Windows 2000/XP/2003 1 27-08-2009 15:12




 
Переход