Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2018, 09:45   #1
ComAlex
Пользователь
 
Регистрация: 27.08.2012
Сообщений: 33
По умолчанию [РЕШЕНО] Как выполнить команды 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 в 12:15.
ComAlex вне форума Ответить с цитированием
Старый 08.11.2018, 10:12   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

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

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

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

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

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

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


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


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

Код:
  
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 в 17:26.
jillitil вне форума Ответить с цитированием
Старый 08.11.2018, 19:53   #7
ComAlex
Пользователь
 
Регистрация: 27.08.2012
Сообщений: 33
По умолчанию

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

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

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

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

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


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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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