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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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

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.51 до Windows 10) и command.com (DOS 5.0 и выше). Старые командные процессоры можно запускать на более новых ОС, хотя не всё может работать корректно. Подробная документация по командам cmd.exe и стандартным утилитам ОС для NT 3.51, NT 4.0, NT 5.0 (Windows 2000) и NT 5.2 (Windows Server 2003). Сборник представляет исторический интерес, а также незаменим для тех, у кого появилось желание сделать свои скрипты работоспобными не только на текущей версии ОС. Ссылки wdho.ru tinyupload.com dbree.org
 
· Сборник одним архивом: Сотни Win32 утилит командной строки, нетривиальные .cmd файлы, .bat miniperl скрипты (не требующие полноценной установки Perl), FAR Manager с плагинами и настройками, разное для DOS/DOSBox (откуда под Win32 интерес представляют три продвинутых "мультисистемных" .bat файла да ещё, может быть, оболочка Necromancer DOS Navigator с поддержкой LFN и доступом к буферу обмена Windows). Краткие описания всего - в файликах files.bbs

Всего записей: 37561 | Зарегистр. 26-02-2002 | Отправлено: 13:35 19-09-2020 | Исправлено: Maz, 07:16 24-04-2021
GCRaistlin



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

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

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

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

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

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

Всего записей: 129 | Зарегистр. 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

Всего записей: 3195 | Зарегистр. 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)}
 

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



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

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

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

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

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



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


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

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



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

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



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

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

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

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

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

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

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

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



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

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

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

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

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



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

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

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

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

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

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

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

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

Всего записей: 129 | Зарегистр. 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

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

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

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

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

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



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

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

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

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

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

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

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

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

Всего записей: 129 | Зарегистр. 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
 

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

Всего записей: 129 | Зарегистр. 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

Всего записей: 3195 | Зарегистр. 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, "работает не трожь".

Всего записей: 129 | Зарегистр. 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

Всего записей: 3195 | Зарегистр. 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

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


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru

Рейтинг.ru