Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии - bat, cmd

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187

Открыть новую тему     Написать ответ в эту тему

Maz



Дед Мазай
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
часть 1 | часть 2 | часть 3 | часть 4 | часть 5
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [ more ].  

Смежные темы:
В помощь системному администратору > Автоматизация администрирования
Microsoft Windows > Сценарии Windows

Полезные ссылки:
· Из Windows XP Professional Product Documentation:
> Описание Cmd.exe > Command shell overview
> Using batch files > Using batch parameters > Using filters > Using command redirection operators
 
· Уроки bat-аники (для начинающих): первый и второй
· Курс из 19 лекций "Командная строка и сценарии Windows"
· Уильям Р. Станек - Командная строка Windows. Справочник администратора
 
· Выполнение BAT-скриптов без вызова окна консоли
· cmdow - изменение параметров и видимости дос-окна, Статья в КОМПЬЮТЕРРАONLINE
· Набор GNU утилит для win32
· HS_Packet.7z - Пакет утилит для организации интерфейса в bat-файлах
· blat - отправка почты из консоли
· Easy Batch Builder+Rus+Crack - Редактор BAT файлов.Через графический интерфейс программы вы сможете быстро конструировать пакетные файлы практически любой сложности. (В комплекте есть Лоадер созданный с помощью Sign Of Misery некоторые антивирусы обзывают его вирусом. Вам решать: ставить или не ставить) (ЗЕРКАЛО)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) ещё и ещё
· Переход из 32-битной версии cmd.exe в 64-битную (1) (2)(3)
 
· Архив всевозможных версий cmd.exe (от Windows NT 3.10 до Windows 11 +Win95cmd +ReactOS) и command.com (DOS 5.0 и выше). Старые командные процессоры можно запускать на более новых ОС, хотя не всё может работать корректно. Подробная документация по командам cmd.exe и стандартным утилитам ОС для NT 3.51, NT 5.0 (Windows 2000) и NT 5.2 (Windows Server 2003). Сборник представляет исторический интерес, а также незаменим для тех, у кого появилось желание сделать свои скрипты работоспобными не только на своей версии ОС.
 
· Большой сборник одним архивом: Сотни Win32 утилит командной строки, нетривиальные .cmd файлы, .bat miniperl скрипты (не требующие полноценной установки Perl), FAR Manager с плагинами и настройками, разное для DOS/DOSBox (откуда под Win32 интерес представляют три продвинутых "мультисистемных" .bat файла да ещё, может быть, оболочка Necromancer DOS Navigator с поддержкой LFN и доступом к буферу обмена Windows). Краткие описания всего - в файликах files.bbs

Всего записей: 38758 | Зарегистр. 26-02-2002 | Отправлено: 13:35 19-09-2020 | Исправлено: metatrop, 07:55 29-11-2022
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Silver Raven

Цитата:
Не, тот способ не помог.

Вы хотите сказать, что берете мой код, натравливаете его на файл с пустыми строками - и получаете на выходе файл без пустых строк?

----------
Magically yours
Raistlin

Всего записей: 3962 | Зарегистр. 18-04-2005 | Отправлено: 21:39 16-11-2021
Silver Raven

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
Нет, я хочу сказать, что правлю свой код по аналогии с вашим и результат не меняется.
 
Можно и скопипастить, но я не очень понимаю как там организованна эта хитрая замена, с сохранением пустых строк. Товарищ, просил целый набор условий с цифрами, пробелами и тире. Попробую переделать под себя.

Всего записей: 149 | Зарегистр. 12-10-2012 | Отправлено: 00:43 17-11-2021 | Исправлено: Silver Raven, 00:55 17-11-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Silver Raven
Сохранение обеспечивает внешний цикл. Вам нужно заменить то, что внутри него, на свой код. Только вместо

Код:
 
echo %%A
 

используйте

Код:
 
echo/%%A
 


----------
Magically yours
Raistlin

Всего записей: 3962 | Зарегистр. 18-04-2005 | Отправлено: 01:04 17-11-2021
Silver Raven

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
Посоветовали inifile. Идеальная вещь, для моих потребностей. И на virustotal-е, хвала богам, на нее не набрасываются.
 
А касательно выяснения месторасположения папки пользователя, посоветовали это:

Код:
 
@set @a=0/*&echo off
@for /f "tokens=1,2 delims=*" %%a in ('cscript /e:jscript %0') do @set "Docs=%%a"&&set "Local=%%b"
 
:: тут остальной код
 
echo %Docs%
echo %Local%
pause>nul
 
:: тут остальной код
 
exit
*/with(WSH.CreateObject('Shell.Application')){WSH.echo(namespace(5).self.path+'*'+namespace(28).self.path)}
 

Всего записей: 149 | Зарегистр. 12-10-2012 | Отправлено: 22:46 17-11-2021 | Исправлено: Silver Raven, 21:24 18-11-2021
Fenrizz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
INKOGNI

Цитата:
Правда не понимаю, где писать комментарий, в каких скобках?

А я не понимаю, что тут непонятного? Строка, начинающаяся с REM считается комментарием, а не командой и не выполняется.
Соответственно, чтобы отключить команду, надо перед ней написать REM

Код:
REM rd /S /Q "%%I"  

Всего записей: 677 | Зарегистр. 12-09-2017 | Отправлено: 06:47 18-11-2021 | Исправлено: Fenrizz, 12:55 18-11-2021
ipmanyak



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nikitos435 включи вывод на экран
@echo on
ставь после команд команду
pause
или после каждой или после тех, на которые грешишь
запускай батник вручную  и отслеживай ход выполнения на экране  


----------
В сортире лучше быть юзером, чем админом...

Всего записей: 11724 | Зарегистр. 10-12-2003 | Отправлено: 12:55 18-11-2021
Fenrizz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Silver Raven
А чем системная переменная %USERPROFILE% не устраивает?

Всего записей: 677 | Зарегистр. 12-09-2017 | Отправлено: 13:01 18-11-2021
INKOGNI



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fenrizz

Цитата:
Соответственно, чтобы отключить команду, надо перед ней написать REM  

Вот теперь понял, что имелось ввиду. Спасибо.

Всего записей: 1355 | Зарегистр. 09-01-2006 | Отправлено: 15:44 18-11-2021
Silver Raven

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fenrizz

Цитата:
А чем системная переменная %USERPROFILE% не устраивает?

Тем, что она корректно работает в половине случаев. Все описано мной на предыдущих страницах.
 

Всего записей: 149 | Зарегистр. 12-10-2012 | Отправлено: 18:04 18-11-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Silver Raven

Цитата:
Тем, что она корректно работает в половине случаев.

В самом деле? А мне показалось - потому, что вам нужна папка My Documents.

----------
Magically yours
Raistlin

Всего записей: 3962 | Зарегистр. 18-04-2005 | Отправлено: 18:07 18-11-2021
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Папка Documents может быть в другом месте. Лучше ее путь взять из реестра

Почему не стоит брать путь из реестра:
Длинная и печальная история ключа Shell Folders

----------
Разум когда-нибудь победит

Всего записей: 3179 | Зарегистр. 09-02-2003 | Отправлено: 19:46 18-11-2021
Silver Raven

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin

Цитата:
В самом деле? А мне показалось - потому, что вам нужна папка My Documents.

Не скажу за все актуальные ОС, но на той же 10-ке, именно Documents. My Documents -  оставлен для совместимости со старым ПО со времен 7-ки. А все, кто жаловался мне на неработоспособность моего cmd-шника, обладатели Win 10.

Всего записей: 149 | Зарегистр. 12-10-2012 | Отправлено: 21:14 18-11-2021 | Исправлено: Silver Raven, 21:20 18-11-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да хоть Documents, хоть My Documents - всё равно это не то же самое, что %USERPROFILE%.

----------
Magically yours
Raistlin

Всего записей: 3962 | Зарегистр. 18-04-2005 | Отправлено: 21:48 18-11-2021
Silver Raven

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin

Цитата:
Да хоть Documents, хоть My Documents - всё равно это не то же самое, что %USERPROFILE%.

Напишите ваш вариант. Я не против попробовать. Скину юзерам, узнаем результат.

Всего записей: 149 | Зарегистр. 12-10-2012 | Отправлено: 21:52 18-11-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Silver Raven
Что попробовать-то? Вы пишете про %USERPROFILE%:

Цитата:
она корректно работает в половине случаев

Я лично со второй половиной случаев не сталкивался. И у вас затык был вовсе не с %USERPROFILE%.

----------
Magically yours
Raistlin

Всего записей: 3962 | Зарегистр. 18-04-2005 | Отправлено: 21:56 18-11-2021
Silver Raven

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin

Цитата:
Я лично со второй половиной случаев не сталкивался. И у вас затык был вовсе не с %USERPROFILE%.

Лично у меня вообще никаких проблем не вылезало. Только репорты юзеров, о том, что "файл не найден" и скриншоты, где этот он лежит по нужному пути.

Всего записей: 149 | Зарегистр. 12-10-2012 | Отправлено: 22:12 18-11-2021
Silver Raven

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть у меня еще такая портянка, для чтения внешнего конфига:
 

Код:
 
set "MainConfig=Silver Raven mods pack data\main_config.ini"
set "HDAudioConfig=Silver Raven mods pack data\hd_audio_config.ini"
set "ControlPanelFilesListConfig=Silver Raven mods pack data\control_panel_files_list.cfg"
set "ENBINI=enbseries\enbeffect.fx.ini"
 
:: Чтение конфиг-файлов сборки
for %%N in ("%MainConfig%" "%HDAudioConfig%" "%ENBINI%") do <"%%~N" (for /f "eol=[ delims=" %%A in ('more') do set "%%A")
 
call :read_control_panel_files_list_config "%ControlPanelFilesListConfig%"
 
:: Проверка наличия всех файлов для панели управления в Silver Raven mods pack data
for %%? in (%$ControlPanelFilesList%) do (
if not defined ControlPanelFilesIsMissingFiles if not exist "%%~?" set "ControlPanelFilesIsMissingFiles=1"
)
 
if defined ControlPanelFilesIsMissingFiles (
color fc
 echo.
 echo.
 echo *ОШИБКА! Нижеуказанные файлы, необходимые для корректной работы программы, не найдены:
 echo ____________________________________________________________________________________
 echo.
 echo.
 for %%? in (%$ControlPanelFilesList%) do if not exist "%%~?" <nul echo %%~?
 echo.
 echo.
 echo ____________________________________________________________________________________
 echo.
 echo *ОШИБКА! Вышеуказанные файлы, необходимые для корректной работы программы, не найдены.
 echo.
 echo.
pause  
exit
)
goto другой код
 
:read_control_panel_files_list_config
for /f "usebackq eol=; tokens=1,2* delims=" %%A in ("%~1") do set "$%%A=%%B"
exit /b
 

 
Используется для проверки наличия всех файлов в определенной папке по списку вида:
 
ControlPanelFilesList="Silver Raven mods pack data\ENB\enbseries\textures\SMAA_SearchTex.dds" "Silver Raven mods pack data\ENB\enbseries\!_L_Dungeons.ini" и т.д.
 
Хочу перетащить этот список в новый ini конфиг состоящий из секций (переменная %MainConfig%). Что подправить в:

Код:
 
:read_control_panel_files_list_config
for /f "usebackq eol=; tokens=1,2* delims=" %%A in ("%~1") do set "$%%A=%%B"
exit /b
 

чтобы он корректно читался?

Всего записей: 149 | Зарегистр. 12-10-2012 | Отправлено: 17:16 19-11-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Silver Raven
У вас что-то не работает?
 

Код:
 
for %%N in ("%MainConfig%" "%HDAudioConfig%" "%ENBINI%") do <"%%~N" (for /f "eol=[ delims=" %%A in ('more') do set "%%A")
 

Смысл этих извратов с перенаправлением вместо простого указания файлов в качестве сета для FOR?
 

Код:
 
for /f "usebackq eol=; tokens=1,2* delims=" %%A in ("%~1") do set "$%%A=%%B"
 

eol=; лишний, он и так по умолчанию. Непонятно, зачем читаете третий токен, если используете только два.
 
Добавлено:
А, ну, конечно, так работать не будет. Разделителей у вас нет - откуда возьмется второй токен?

----------
Magically yours
Raistlin

Всего записей: 3962 | Зарегистр. 18-04-2005 | Отправлено: 17:33 19-11-2021 | Исправлено: GCRaistlin, 17:33 19-11-2021
Silver Raven

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin

Цитата:
Смысл этих извратов с перенаправлением вместо простого указания файлов в качестве сета для FOR?

Это "чудо" для вот такого:
 
(не знаю как показать, форум все ломает)
https://www.imgshare.io/images/2021/11/19/cmd_info_option.png
 

Цитата:
Непонятно, зачем читаете третий токен, если используете только два.

Там уже столько раз конфиг менялся, что я и сам не помню зачем. Что-то написал, но выводило нон на экран все в кучу, пошел на форумы - подправили.... Так и тянется, эдакий legacy, "работает не трожь".

Всего записей: 149 | Зарегистр. 12-10-2012 | Отправлено: 17:42 19-11-2021 | Исправлено: Silver Raven, 17:48 19-11-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Silver Raven
В этом "чуде" нет смысла. Оно, конечно, работает, но вы, видимо, не понимаете как.  Это как секс в гамаке и стоя - для пионеров, которые без трудностей не могут.
 

Цитата:
Так и тянется, эдакий legacy, "работает не трожь".

Так он разве работает? У вас %%B всегда пустой.

----------
Magically yours
Raistlin

Всего записей: 3962 | Зарегистр. 18-04-2005 | Отправлено: 18:50 19-11-2021
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии - bat, cmd


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru