0 / 0 / 0
Регистрация: 26.07.2013
Сообщений: 62
1

Запуск cmd и выполнение команды макросом

28.02.2018, 16:45. Показов 19231. Ответов 5
Метки нет (Все метки)

Доброго дня!

Подскажите, пожалуйста, как запустить макросом из excel командную строку и выполнить команду?

Нужно пропарсить много папок с фото сделать список со всеми путями ко всем файлам.

В excel собираю в ячейки запросы:
cmd cd /d "Z:\Общая Для Всех\ИМ\Фотографии\старьё_1" && dir /b /s /a-d > "C:\Users\admin\Desktop\парсинг фото\txt 28.02.18\11.txt"

Первый запрос переходит в нужную директорию (папку), второй запрос парсит файлы и записывает в txt.

Если отдельно в cmd прописать сначала:
cd /d "Z:\Общая Для Всех\ИМ\Фотографии\старьё_1"
потом dir /b /s /a-d > "C:\Users\admin\Desktop\парсинг фото\txt 28.02.18\11.txt"
, то все отрабатывает.

Если запускаю макрос, то он открывает командную строку и ничего не делает.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Function sdfsdf()
 
Dim a As String
 
a = Sheets("Красота").Cells(17, 1)
 
'Shell (a)
 
    With CreateObject("WScript.Shell")
        .Run a
    End With
 
End Function
Есть соображения? Я уже половину интернета перелопатил, может неправильно спрашиваю...
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2018, 16:45
Ответы с готовыми решениями:

Интерполяция строк в выполнение команды cmd
Добрый вечер! Для скрытого запуска cmd использую следующий код: var proc = new ProcessStartInfo()...

Параллельное выполнение на серверах команды в cmd
Добрый день! Не получается сделать скрипт, чтобы выполнял создание символической ссылки на...

Запуск команды cmd из программы C++
Привет, как можно исполнить код командной строки из программы ? желательно чтоб окно командной...

Запуск cmd и выполнение quser
Здравствуйте Столкнулся с такой проблемой Deplhi 10.3. При запуске cmd из программы не выполняются...

5
15045 / 6369 / 1726
Регистрация: 24.09.2011
Сообщений: 9,971
28.02.2018, 18:47 2
hil25cm, делайте одной командой
Bash
1
dir "Z:\Общая Для Всех\ИМ\Фотографии\старьё_1" /b /s /a-d > "C:\Users\admin\Desktop\парсинг фото\txt 28.02.18\11.txt"
0
oh my god
1450 / 789 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
28.02.2018, 20:23 3
Можешь вывести все изображения из папки включая подпапки в одну колонку
затем наводи команду выполнения

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Function AllFiles(Folder, Optional c As Collection) As Collection
    Static v, fso As Object: Do While fso Is Nothing: Set fso = CreateObject("scripting.filesystemobject"): Exit Do: Loop
    If c Is Nothing Then Set c = New Collection
    With fso
        For Each v In .getfolder(Folder).SubFolders: DoEvents: AllFiles v.Path, c: Next
        For Each v In .getfolder(Folder).Files: DoEvents: c.Add v: Next
    End With
    Set AllFiles = c
End Function
 
 
 
Sub Промотр_папок_и_подпапок()
    Dim fldr$, i&, v
    Const Filter = ".jpg\\.png\\.gif\\.bmp" ' Расширения с этими форматами будут отображенны в списке
    On Error Resume Next
    With CreateObject("Shell.Application")
        fldr$ = .BrowseForFolder(0, "Выбор папки", 0, "").Self.Path
    End With
    If fldr = "" Then Exit Sub
 
    With Cells(1, 1)
        .Font.Bold = 1: i = 1
        .Value = "Все изображения в папке, включая подпапки"
    End With
    Application.ScreenUpdating = False
    For Each v In AllFiles(fldr)
        If InStr(1, Filter, Right$(v, 4), 1) > 0 Then i = i + 1: Cells(i, 1) = v
    Next
    Application.ScreenUpdating = True
End Sub
0
Эксперт WindowsАвтор FAQ
17822 / 7558 / 889
Регистрация: 25.12.2011
Сообщений: 11,312
Записей в блоге: 17
01.03.2018, 00:10 4
hil25cm,

Visual Basic
1
Shell "cmd.exe /c ""dir /b /s /a-d ""Z:\Общая Для Всех\ИМ\Фотографии\старьё_1\*"" > ""C:\Users\admin\Desktop\парсинг фото\txt 28.02.18\11.txt"""""
Только ответ получите в кодировке OEM-866.
0
0 / 0 / 0
Регистрация: 26.07.2013
Сообщений: 62
01.03.2018, 09:26  [ТС] 5
Цитата Сообщение от Dragokas Посмотреть сообщение
Visual BasicВыделить код
1
Shell "cmd.exe /c ""dir /b /s /a-d ""Z:\Общая Для Всех\ИМ\Фотографии\старьё_1\*"" > ""C:\Users\admin\Desktop\парсинг фото\txt 28.02.18\11.txt"""""
Только ответ получите в кодировке OEM-866.
Огромное спасибо! Кодировка не беда, через notepad++ соберу все в кучу)

Добавлено через 14 минут
Цитата Сообщение от fever brain Посмотреть сообщение
Можешь вывести все изображения из папки включая подпапки в одну колонку
затем наводи команду выполнения
Спасибо, попробую. Не знаю как пойдет, т.к. у меня очень много каталогов и порядка 280 000 файлов.
0
oh my god
1450 / 789 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
01.03.2018, 11:37 6
Цитата Сообщение от hil25cm Посмотреть сообщение
Спасибо, попробую. Не знаю как пойдет, т.к. у меня очень много каталогов и порядка 280 000 файлов.
Ну пол минуты подождешь
если заинтересует я могу многократно ускорить алгоритм вывода изображений в один список из всех подпапок

Добавлено через 11 минут

Не по теме:

ps
можно даже эскизы вывести на рабочий лист, но это дольше будет

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2018, 11:37
Помогаю со студенческими работами здесь

Запуск консоли cmd с передачей в нее команды
товарищи ,подскажите пожалуйста (желательно код) ,как мне вызвать cmd .Т.е запускается программа и...

Запуск bat файла или команды в CMD, не выходит
Нужно настроить маршрутизацию, пробовал создавать bat файл, а потом его запускать. Файл создается...

Запуск powershell и выполнение команды
Привет всем! Есть у кого готовый пример кода? 1) запустить powershell , программно (...

Запуск командой строки и выполнение команды в ней через WinAPI (C++)
Столкнулся с такой задачей. Надо создать файл, записать в него системное время, а потом этот файл...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru