Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Присылайте нам Донат :), напишите за что прислали )


Ответ
 
Опции темы
Старый 08.11.2018, 10:45   #1
ComAlex
Пользователь
 
Регистрация: 27.08.2012
Сообщений: 28
Репутация: 10
По умолчанию [РЕШЕНО] Как выполнить команды bat-файла

Подскажите, господа программисты, как выполнить команды из bat-файла:
Код:

" ...
for /f "delims=" %%i in ('dir "%userprofile%\AppData\Roaming\1C\1Cv82\" /a:d /b') do (IF "%%i" NEQ "ExtCompT" (IF "%%i" NEQ "tmplts" (rmdir /s /q  "%userprofile%\AppData\Roaming\1C\1Cv82\%%i")))
for /f "delims=" %%i in ('dir "%userprofile%\AppData\Local\1C\1Cv82\" /a:d /b') do rmdir /s /q "%userprofile%\AppData\Local\1C\1Cv82\%%i"
for /f "delims=" %%i in ('dir "%userprofile%\AppData\Roaming\1C\1Cv8\" /a:d /b') do (IF "%%i" NEQ "ExtCompT" (IF "%%i" NEQ "tmplts" (rmdir /s /q  "%userprofile%\AppData\Roaming\1C\1Cv8\%%i")))
for /f "delims=" %%i in ('dir "%userprofile%\AppData\Local\1C\1Cv8\" /a:d /b') do rmdir /s /q "%userprofile%\AppData\Local\1C\1Cv8\%%i"
..."

Я хочу не запускать сам bat-файл, а выполнить ТОЛЬКО его команды, например, так:

Код:

var
  Wsh:    Variant;
Begin
  Wsh := CreateOleObject('WScript.Shell');
  Body := 'for /f "delims=" %%i in ('dir "%userprofile%\AppData\Roaming\1C\1Cv82\" /a:d /b') do (IF "%%i" NEQ "ExtCompT" (IF "%%i" NEQ "tmplts" (rmdir /s /q  "%userprofile%\AppData\Roaming\1C\1Cv82\%%i")))';
 // Body - первая строка выше приведенного bat-файла
  Wsh.Run(Body, 0, True);
...

НО так не работает !

Решение:
Цитата:
Сообщение от ComAlex Посмотреть сообщение
Разобрался: %%i ->%i. Всем спасибо - тема закрыта

_____
Код программы нужно выделять (форматировать) тегами [CODE][/CODE] (читать FAQ)
Модератор

Последний раз редактировалось Вадим Мошев; 10.11.2018 в 13:15.
ComAlex вне форума   Ответить с цитированием
Старый 08.11.2018, 11:12   #2
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 25,277
Репутация: 5550
По умолчанию

я Вам не помогу (ибо Вы странного хотите - по сути написать свой командный интрепретатор).

но у меня вопрос есть.
Цитата:
Сообщение от ComAlex Посмотреть сообщение
Я хочу не запускать сам bat-файл
Чем это вызвано?
Serge_Bliznykov на форуме   Ответить с цитированием
Старый 08.11.2018, 16:56   #3
ComAlex
Пользователь
 
Регистрация: 27.08.2012
Сообщений: 28
Репутация: 10
По умолчанию

Я не хочу хранить батник, к которому моя программа будет обращаться потому что:
1. bat-файл пользователи могут удалить нечаянно или чаянно.
2. bat-файл содержит статическую информацию (которая не меняется) - зачем обращаться не нему несколько раз
ComAlex вне форума   Ответить с цитированием
Старый 08.11.2018, 16:59   #4
ComAlex
Пользователь
 
Регистрация: 27.08.2012
Сообщений: 28
Репутация: 10
По умолчанию

Выход есть: надо всего лишь переписать код bat-файла как команды CMD, но ковыряться неохота, так как функционал bat-файла уже рабочий
ComAlex вне форума   Ответить с цитированием
Старый 08.11.2018, 17:22   #5
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 25,277
Репутация: 5550
По умолчанию

Цитата:
Сообщение от ComAlex Посмотреть сообщение
Я не хочу хранить батник, к которому моя программа будет обращаться потому что:
1. bat-файл пользователи могут удалить нечаянно или чаянно.
они точно так же и вашу программу могут удалить нечаянно или чаянно.

Хотите скрыть батник от чужих глаз?
Так никто не мешает вам батник преобразовать в EXE (есть такие инструменты, вроде бы),
либо "зашить" батник в ресурсы своей программы и при необходимости извлекать во временный файл и запускать.


Цитата:
Сообщение от ComAlex Посмотреть сообщение
2. bat-файл содержит статическую информацию (которая не меняется) - зачем обращаться не нему несколько раз
не понял. кто что содержит?


Цитата:
Сообщение от ComAlex Посмотреть сообщение
Выход есть: надо всего лишь переписать код bat-файла как команды CMD, но ковыряться неохота, так как функционал bat-файла уже рабочий
Вы не поверите, но расписать эти команды в командах Delphi будет намного проще, чем распарсить строчку из батника.
Ну, если, конечно, "ковыряться неохота", то ничего не надо делать, оставляйте всё так, как есть.
Serge_Bliznykov на форуме   Ответить с цитированием
Старый 08.11.2018, 18:24   #6
jillitil
Форумчанин
 
Аватар для jillitil
 
Регистрация: 17.10.2018
Адрес: DS:SI
Сообщений: 117
Репутация: 256
По умолчанию

Код:

  
Uses ..., ShellApi;
...
ShellExecute(Application.Handle, Nil, 'Cmd.exe','/c for /f "delims=" %%i in ("dir "%userprofile%\AppData\Local\1C\1Cv 82\" /a /b") do rmdir /s /q "%userprofile%\AppData\Local\1C\1Cv 82\%%i"', Nil, SW_HIDE);
...

PS: Будьте внимательны с одинарными кавычками.

Последний раз редактировалось jillitil; 08.11.2018 в 18:26.
jillitil вне форума   Ответить с цитированием
Старый 08.11.2018, 20:53   #7
ComAlex
Пользователь
 
Регистрация: 27.08.2012
Сообщений: 28
Репутация: 10
По умолчанию

Нет. Так не прокатывает
Ошибка: "Непредвиденное появление: %%i"

Этот вариант я вначале пробовал.
Тут что-то хитрее надо. Про кавычки знаю
ComAlex вне форума   Ответить с цитированием
Старый 08.11.2018, 22:18   #8
ComAlex
Пользователь
 
Регистрация: 27.08.2012
Сообщений: 28
Репутация: 10
По умолчанию

Разобрался: %%i ->%i
Всем спасибо - тема закрыта
ComAlex вне форума   Ответить с цитированием
Старый 10.11.2018, 11:03   #9
саша40
Профессионал
 
Регистрация: 12.09.2012
Сообщений: 1,030
Репутация: -22
По умолчанию

А я думал, что он будет юзать функции работы с файлами и работы с директориями. Ведь по сути, всё что делает батник - перетаскивает файлы из верхнего каталога в более нижний. Обход средств защиты 1С СофтКлаб? Никогда не понимал такие костыли, даже в лицензионном ПО.
__________________
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума   Ответить с цитированием
Старый 11.11.2018, 00:37   #10
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 25,277
Репутация: 5550
По умолчанию

Цитата:
Сообщение от саша40 Посмотреть сообщение
едь по сути, всё что делает батник - перетаскивает файлы из верхнего каталога в более нижний.
а по моему это батник удаляет какие-то временные папки 1C, чистит какие-то каталоги.


Цитата:
Сообщение от саша40 Посмотреть сообщение
Никогда не понимал такие костыли, даже в лицензионном ПО.
при чём здесь костыли?
Serge_Bliznykov на форуме   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как на bat или vbs открыть свойства файла? sergeinovilozf Windows 20 30.03.2018 15:17
Как удалить значение в реестре c помощью BAT файла? alex0097 Операционные системы общие вопросы 3 03.01.2017 19:00
bat-файл. Анализ команды ping Niro Помощь студентам 2 20.05.2015 16:10
Не удается выполнить команды сопроцессора! VintProg Общие вопросы Delphi 1 21.09.2011 21:38
Написать .bat: поиск данных в выводе команды и занесение в переменную Vilgelm Операционные системы общие вопросы 8 14.08.2011 16:46


02:16.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru