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

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

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

Maz (19-09-2020 13:36): Командная строка, батники, сценарии (bat, cmd) Часть 6  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 188 189 190 191 192 193 194 195 196 197 198 199

   

cchameleone



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

Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [ 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 (PDF). Курс лекций для начинающих
· Бокалий В. Командная строка (pdf-брошюрка в 20 страниц)
· Александров А., Дибров А. Урок bat-аники (pdf)
· Уильям Р. Станек - Командная строка Windows. Справочник администратора
 
· Скрываем консольные окна, Выполнение BAT-скриптов без вызова окна консоли
· cmdow — изменение параметров и видимости дос-окна, Статья в КОМПЬЮТЕРРАONLINE
· Набор GNU утилит для win32
· HS_Packet.7z - Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· blat — отправка почты из консоли
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Easy Batch Builder+Rus+Crack - Редактор BAT файлов.Через графический интерфейс программы вы сможете быстро конструировать пакетные файлы практически любой сложности. (В комплекте есть Лоадер созданный с помощью Sign Of Misery некоторые антивирусы обзывают его вирусом. Вам решать: ставить или не ставить) (ЗЕРКАЛО)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) ещё и ещё
· Переход из 32-битной версии cmd.exe в 64-битную (1) (2)(3)

Всего записей: 2279 | Зарегистр. 16-10-2015 | Отправлено: 09:22 29-04-2016 | Исправлено: Maz, 08:47 26-03-2020
Silver Raven

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, не пойму, правильно ли я сформировал список, проверяемый при запуске этого куска кода:
 

Код:
 
set "HDSoundsPackagesENGLocalization="Data\Unofficial HD Audio Project - ENG0.bsa" "Data\Unofficial HD Audio Project - ENG1.bsa" "Data\Unofficial HD Audio Project - ENG2.bsa" "Data\Unofficial HD Audio Project - ENG3.bsa" "Data\Unofficial HD Audio Project - ENG4.bsa""
 
set "HDSoundsPackagesRUSLocalization="Data\Unofficial HD Audio Project - RUS0.bsa" "Data\Unofficial HD Audio Project - RUS1.bsa" "Data\Unofficial HD Audio Project - RUS2.bsa" "Data\Unofficial HD Audio Project - RUS3.bsa" "Data\Unofficial HD Audio Project - RUS4.bsa""
 
set "HDSoundsPackagesENG&RUSLocalization="Data\Unofficial HD Audio Project - ENG0.bsa" "Data\Unofficial HD Audio Project - ENG1.bsa" "Data\Unofficial HD Audio Project - ENG2.bsa" "Data\Unofficial HD Audio Project - ENG3.bsa" "Data\Unofficial HD Audio Project - ENG4.bsa" "Data\Unofficial HD Audio Project - RUS0.bsa" "Data\Unofficial HD Audio Project - RUS1.bsa" "Data\Unofficial HD Audio Project - RUS2.bsa" "Data\Unofficial HD Audio Project - RUS3.bsa" "Data\Unofficial HD Audio Project - RUS4.bsa""
 
 
cls
:: Это слишком убого. Фу бяка.
:: Если установлены HD пакеты русско и англоязычной локализации - переходим в меню выбора языка озвучания
if exist "%HDSoundsPackagesENG&RUSLocalization%" call :option_2_hd_sounds_packages_change_lang_localization
 
:: Проверяем наличие HD пакетов англоязычной локализации
if not exist "%HDSoundsPackagesENGLocalization%" (
 
:: Проверяем наличие HD пакетов русскоязычной локализации
if not exist "%HDSoundsPackagesRUSLocalization%" call :option_2_install_hd_sounds_packages_error
if exist "%HDSoundsPackagesRUSLocalization%" call :opton_2_install_hd_sounds_packages_rus
)
if exist "%HDSoundsPackagesENGLocalization%" call :opton_2_install_hd_sounds_packages_eng
 
:: Ошибка - выводимая при отсутствии HD пакетов локализации и музыки в папке с игрой
:option_2_install_hd_sounds_packages_error
cls
color fc
 @echo.
 @echo *ОШИБКА! HD пакеты локализации не обнаружены в папке с игрой!
 @echo.  
pause
goto :option_2_hd_sounds_packages_menu
)
 

 
Потому как, это "чудо" всегда возвращает мне отрицательный результат.
З.Ы. проверяемые файлы могут быть как из первого, второго, или обоих списков сразу. А действия нужны каждый раз разные. Наверное нихрена не понятно, но я дополню, если потребуется.

Всего записей: 149 | Зарегистр. 12-10-2012 | Отправлено: 19:30 30-03-2020 | Исправлено: Silver Raven, 19:32 30-03-2020
usalex

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно ли сделать такой батник, чтоб он создавал в указанной папке текстовый файл с именем, взятым из буфера обмена?
Если возможно, подскажите, плиз, как это должно выглядеть.

Всего записей: 6373 | Зарегистр. 20-12-2004 | Отправлено: 19:25 05-04-2020
iglezz

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
usalex
раз, два и ещё несколько вариантов в версии для печати

Всего записей: 1521 | Зарегистр. 18-02-2003 | Отправлено: 19:48 05-04-2020
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iglezz
А я так и не нашел решения вот такой задачи:
 
1. Выделен файл в проводнике
2. Хоткей вызывает команду, содающую пустой текстовой файл  
около выделенного в проводнике с именем этого выделенного файла.
 
Другими словами, пример:
я выделил в проводнике кликом мыши файл report.pdf
нажал хоткей  
около файла report.pdf создался файл report.txt
 
Поиск по веткам форума ничего не дал.  
Может я проглядел решение ?
 
Заранее Спасибо за подсказки как реализовать  
 
PS Подобная конструкция нужна для оставления комментария к файлам
подозреваю, что что-то подобное есть в тотал коммандере. Но я в основном пользуюсь проводником виндоуз ...
Да, сейчас посмотрел тотал - там это и называется комментарии (по CTRL+Z),  
Тока эти комменты пишутся в файл descript.ion и он один для всех файлов в папке.  
Если перенесу комментируемый файл в другую папку, то комментарий к нему пропадет.

Всего записей: 2522 | Зарегистр. 11-12-2002 | Отправлено: 20:35 05-04-2020 | Исправлено: kot1313, 23:03 05-04-2020
Inoz2000



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

Цитата:
Если перенесу комментируемый файл в другую папку, то комментарий к нему пропадет.

Это, смотря чем переносить.
 

Цитата:
Хоткей вызывает команду, содающую пустой текстовой файл

Задача существенно упрощается, если использовать возможности контекстного меню, появляющегося на вашем файле.

Всего записей: 5220 | Зарегистр. 23-04-2009 | Отправлено: 20:49 05-04-2020
iglezz

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kot1313
Если с хоткеями, это лучше к AutoIt

Всего записей: 1521 | Зарегистр. 18-02-2003 | Отправлено: 20:50 05-04-2020
Jonmey

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

Цитата:
Если перенесу комментируемый файл в другую папку, то комментарий к нему пропадет.

В настройках TC есть галка для этого: Copy comments with files.
 
Самый же наверное простой способ создавать одноименный (с файлом под курсором) текстовый файл (с любым расширением или без) можно проиллюстрировать на примере текстового редактора EditPlus (др. редакторы имеют аналогичные возможности) кнопка для TC такова
Код:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\EDIT\EditPlus\editplus.exe
"%P%O.txt"
%COMMANDER_PATH%\icons\bar_icon\YourIcons.dll,1
FileName.txt
%COMMANDER_PATH%\EDIT\EditPlus\
 
-1

Всего записей: 1375 | Зарегистр. 17-01-2011 | Отправлено: 20:57 05-04-2020 | Исправлено: Jonmey, 21:28 05-04-2020
lexapass



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

Цитата:
Народ, не пойму, правильно ли я сформировал список, проверяемый при запуске этого куска кода:

Разве if exist в cmd умеет проверять списком ?
Или точное имя или с маской ? или *, типа "Data\Unofficial HD Audio Project - ENG?.bsa" или "Data\Unofficial HD Audio Project - *.bsa".

Всего записей: 567 | Зарегистр. 11-10-2004 | Отправлено: 21:08 05-04-2020
Inoz2000



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
легко гуглится вариант на NTFS https://wincmd.ru/plugring/NTFS_diz.html

Всего записей: 5220 | Зарегистр. 23-04-2009 | Отправлено: 21:10 05-04-2020
kot1313



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

Цитата:
кнопка для TC такова
Код:

Код:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\EDIT\EditPlus\editplus.exe
"%P%O.txt"
%COMMANDER_PATH%\icons\bar_icon\YourIcons.dll,1
FileName.txt
%COMMANDER_PATH%\EDIT\EditPlus\
 
-1

 

В ТС при содании кнопки через ГУЙ нету стока места, чтоб вставить этот код.
не пойму как вставить Ваш код в кнопку ?
 
Я сделал методом научного тыка вот так:

одноимённый Файл создаётся, тока каждый раз спрашивает у меня - содать файл.
Как избавиться от этого запроса ?

Всего записей: 2522 | Зарегистр. 11-12-2002 | Отправлено: 22:43 05-04-2020 | Исправлено: kot1313, 22:48 05-04-2020
Jonmey

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

Цитата:
В ТС при содании кнопки через ГУЙ нету стока места, чтоб вставить этот код.  не пойму как вставить Ваш код в кнопку ?  

Вы фантазируете, поскольку код кнопки элементарно вставляется обычной копипастой - выделить текст в сообщении форума, правый клик на панели инструментов TC -> Paste (то есть, штатно для TC) без всякого научного тыка (только иконку вам придется вставить свою).
Цитата:
Как избавиться от этого запроса ?

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

Всего записей: 1375 | Зарегистр. 17-01-2011 | Отправлено: 22:53 05-04-2020 | Исправлено: Jonmey, 22:56 05-04-2020
kot1313



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

Цитата:
код кнопки элементарно вставляется обычной копипастой (то есть, штатно для TC)

Дак я про это не знал, я вызывал ГУЙ клавишей Изменить, затем Добавить в контекстном меню панели ТС.  
А Вашим способом действительно элементарно вставляется !!! (сейчас попробовал)
ОГРОМНОЕ спасибо за эту подсказку-ЛайфХак

Всего записей: 2522 | Зарегистр. 11-12-2002 | Отправлено: 23:08 05-04-2020 | Исправлено: kot1313, 23:08 05-04-2020
Jonmey

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

Цитата:
Дак я про это не знал

А толстые хелпы к TC (наряду со штатным) люди пишут и размещают в шапках тем не для вас? Им просто нечем заняться, и чтобы хоть как-то убить время от скуки... Не говоря о том, что они же (то есть, те же самые люди) одно и то же в тех же самых темах талдычат из года в год...  
* * *
Если вариант создания одноименного с выделенным файла с использованием текстового редактора не устраивает, можно и ком.строкой обойтись в кнопке ТС.

Код:
TOTALCMD#BAR#DATA
%comspec% /c @echo off &
null>"%P%O.txt"
%COMMANDER_PATH%\TOTALCMD.EXE,23
FileName.txt
 
 
-1

Всего записей: 1375 | Зарегистр. 17-01-2011 | Отправлено: 23:47 05-04-2020 | Исправлено: Jonmey, 23:51 05-04-2020
kot1313



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

Цитата:
А толстые хелпы к TC (наряду со штатным) люди пишут и размещают в шапках тем не для вас?

Поймите, я решаю маленькую прикладную задачу.
На которую я выделил минимум времени.
Если эта задача нерешаема быстро в текущем контексте,  
то я её отбрасываю на периферию до лучших времён.
 
А из хелпа к тоталу мне нужно было всего 0.001% информации (про вставку).
И, как оказалось, это совсем не относилось к теме, которую я искал.
Поэтому Быстро Ваш лайвхак я и не нашел ни в руководстве ТС
(поскольку искал информацию про создание одноимённого текстового файла),  
ни в тырнете (яндекс с гуглом выдал как обычно кучу всего, тока не то что надо)
 
Исчо раз повторюсь - в решение маленькой задачи на полчаса совсем не входит  
изучение синтаксиса скриптовых языков и полное овладение тотал коммандером.  
Каждое из этих действий займёт от недели до месяца.
 
Поэтому я и попросил о помощи. Вы мне помогли.
Огромное СПАСИБО

Всего записей: 2522 | Зарегистр. 11-12-2002 | Отправлено: 01:02 06-04-2020 | Исправлено: kot1313, 01:04 06-04-2020
Jonmey

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

Цитата:
Поймите, я решаю маленькую прикладную задачу.

Это не является оправданием нежелания изучить базовые основы софта с которым работаете. От слова совсем.
Если каждому "решающему маленькую прикладную задачку" нужно будет объяснять самые начала в каждом вопросе, потому что ему некогда или лень читать справку, то форум превраться в детский сад, который потеряет ценность, как для более-менее продвинутых юзеров, так и для потенциальных помощников, которым, по массе своей, интересно решать реальные, а не детсадовские задачки.
 
Конкретно же вам за последний месяц уже половину хелпа многочисленные помощники продекламировали своими пальцами, а вовсе не 0.0001%, как вы тут пытаетесь внушать. Оставшуюся половину справки к ТС, хотя бы из уважения к юзерам форума, вам стоило бы осилить самостоятельно.

Всего записей: 1375 | Зарегистр. 17-01-2011 | Отправлено: 01:39 06-04-2020 | Исправлено: Jonmey, 01:44 06-04-2020
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть папка с именем, например, Papka, внутри неё папки - папка 1, папка 2, папка 3
Хочу сделать так, чтоб они появились в C:\Program Files как симлинки
Создал следующее:

Код:
cmd /c RMDIR "%PROGRAMFILES%\папка 1" /s /q
MKLINK /D "%PROGRAMFILES%\папка 1" "%~dp0папка 1"
cmd /c RMDIR "%PROGRAMFILES%\папка 2" /s /q
MKLINK /D "%PROGRAMFILES%\папка 2" "%~dp0папка 2"
cmd /c RMDIR "%PROGRAMFILES%\папка 3" /s /q
MKLINK /D "%PROGRAMFILES%\папка 3" "%~dp0папка 3"
 

cmd запускается из Papka
Папки создаются в C:\Program Files и усё работает, НО ...
 
Хотелось бы не прописывать в дальнейшем каждую папку в cmd
(папок в дальнейшем будет не 3шт, а больше)
 
Вопрос:
Можно ли сделать bat\cmd, чтоб он срабатывал из Papka и добавлял все папки этой Papka симлинками в C:\Program Files.
Без прописывания каждой папки отдельно в кмд ?
 
Добавлено:
PS Моя попытка содания такого cmd привела к визуально резкому уменьшению содержимого C:\Program Files.  
Cтёрлось из C:\Program Files практически усё, осталось тока то, что было в этот момент запущено  
Пришлось потратить 15 секунд и произвести перезагрузку, чтоб восстановилось содержание C:\Program Files

Всего записей: 2522 | Зарегистр. 11-12-2002 | Отправлено: 20:53 08-04-2020 | Исправлено: kot1313, 21:00 08-04-2020
Jonmey

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kot1313
Делается по аналогии, как например, описано тут:
https://stackoverflow.com/questions/51913691/batch-file-to-create-multiple-symbolic-links
в цикл можете добавить несколько команд - rmdir, if (not) exist, собственно mklink...

Всего записей: 1375 | Зарегистр. 17-01-2011 | Отправлено: 22:25 08-04-2020 | Исправлено: Jonmey, 22:30 08-04-2020
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Jonmey
Спасибо за исчерпывающий ответ, пошел разбираться

Всего записей: 2522 | Зарегистр. 11-12-2002 | Отправлено: 02:40 09-04-2020
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Итак, получилась следующая конструкция

Код:
@echo off
set "target=%~dp0"
set "destination=%PROGRAMFILES%"
for /d %%A in ("%target%\*") do mklink /d "%destination%\%%~nxA" "%%~A"

Если в програм файлз соответствующих папок нет,  
то симлинки к папкам в той папке где запускаю cmd создаются прекрасно.  
и Всё работает. Но...
 
Если я запускаю этот cmd из папки на жестком диске, то усё Ок
Но если я запускаю его из идентичной папки с флешки, то на всех ссимлинкленных папках,  
подпапках и файлах появляются замки !!!  
Правда, этот дизайнерский изыск виндоус не оказывает никакого паразитического влияния  
на работе ссимлинкленных папок и файлов. Но эти замки реально бесят  
 
Не думал, что виндоуз мне подложит такую "дизайнерскую" свинью.
Тем более, что мне этот cmd нужен был именно для запуска с флешки.
 
Подскажите, почему Виндоуз симлинки к одним и тем же объектам на HDD и флешке обрабатывает по разному ?  
И как с этим безобразием бороться ?

Всего записей: 2522 | Зарегистр. 11-12-2002 | Отправлено: 04:24 10-04-2020 | Исправлено: kot1313, 06:43 10-04-2020
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обнаружил исчо одну непонятку
Если удалять уже ссимлинкленные папки следующим кодом:

Код:
@echo off
set "target=%~dp0"
set "destination=%PROGRAMFILES%"
for /d %%A in ("%target%\*") do RMDIR "%destination%\%%~nxA" /s /q

То усё Ок (Все исходные папки-файлы на месте)
Если же эти ссимлинкленные папки удалять ручками через Explorer, то удаляются как исходные папки, так и все файлы в них.
Складывается ощущение, что команда
Код:
mklink /d "%destination%\%%~nxA" "%%~A"
создаёт не сивольные ссылки на исходные папки, а Junction ...
Хотя в хелпе написано, что /d создает символьную ссылку, а /j - соединения для каталога (Junction)  
 
Тогда встаёт вопрос, как правильно удалить созданные симлинки, чтоб не удалились исходные папки ?
Другими словами, является ли RMDIR единственным правильным решением для удаления симлинков ?

Всего записей: 2522 | Зарегистр. 11-12-2002 | Отправлено: 06:26 10-04-2020 | Исправлено: kot1313, 06:45 10-04-2020
   

Страницы: 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 188 189 190 191 192 193 194 195 196 197 198 199

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Maz (19-09-2020 13:36): Командная строка, батники, сценарии (bat, cmd) Часть 6


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru