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

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



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

Цитата:
Как мне это расценивать? Невозможно?

Да как... вот этот набор пожеланий:

Цитата:
чтоб ей было "фиолетово" до символов/кодировок/языков?


Цитата:
чтоб получить папку вида "ГГГГ-ММ-ДД_чч-мм" и ей было "фиолетово" до символов/кодировок/языков?

Реализовать не получится.
Можно конечно, сменить кодовую страницу консоли и поменять вывод у некоторых команд, но заставить работать утилиты командной строки cmd с Unicode - это вряд ли.
А со спецсимволами так и вообще беда... в отличие от powershell...  
 
Добавлено:
Smitis

Цитата:
Может он не в юникоде передаёт, в ASCII (тотал до сих под с описаниями файлов в юникоде работать не умеет, может и здесь так).

Тотал умеет список папок и файлов выводить в файл, причем в UTF8, вот с ним, как раз, и работает мой код...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 14:10 14-09-2018
Smitis



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

Цитата:
в отличие от powershell...

А как же квадратные скобки и ` в именах файлов и папок?


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

Всего записей: 3179 | Зарегистр. 09-02-2003 | Отправлено: 14:32 14-09-2018
YuS_2



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

Цитата:
А как же квадратные скобки и ` в именах файлов и папок?

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

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 14:57 14-09-2018
virussnu

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Smitis
Уважаемые камрады!  

Я немного Вас ввёл в заблуждение!

Сейчас посмотрел внимательней - проблема есть только с созданием папок внутри каталогов, содержащих знак "&". Насчёт конкретно "китайского" - тут проблем нет!!! Извините, перепутал проблему с "китайским", относящуюся к одному из плагинов!!!!
Короче, загвоздка только из-за "&" в имени папок, в которых нужно создать каталоги по дате файлов/каталогов из другой панели TC!!!
Ну и про часы минуты ещё-бы решить...
 Хотелось-бы чтоб не было возможных проблем и с другими допустимыми символами.

Всего записей: 347 | Зарегистр. 15-09-2007 | Отправлено: 15:31 14-09-2018 | Исправлено: virussnu, 15:34 14-09-2018
GCRaistlin



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

Цитата:
1. КАК ПОПРАВИТЬ команду, чтоб ей было "фиолетово" до символов/кодировок/языков?

Без батника проблема с "&" в именах нерешаема. Если это не принципиально, можно попробовать. А чтобы все работало для юникодных имен, думаю, нужно выставить для консоли юникодный шрифт.

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

Всего записей: 3962 | Зарегистр. 18-04-2005 | Отправлено: 15:38 14-09-2018 | Исправлено: GCRaistlin, 15:38 14-09-2018
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
YuS_2
Естественно решаема. Например, использовать LiteralPath.
Иностранцы, имхо, очень квадратные скобки любят. У них на этих клавишах (у кого английский родной) никакие нацсимволы не висят, вводить просто, без всяких регистров. Я когда-то тоже пытался эти скобки не использовать, потом на это дело забил - всё равно встречаются, причём именно там, где PS нужен.
 
 
Добавлено:
GCRaistlin

Цитата:
нужно выставить для консоли юникодный шрифт

К сожалению, юникодный шрифт влияет иключительно на ОТОБРАЖЕНИЕ текста в консоли. Да, будут показываться не вопросительные знаки, а иероглифы, но с кодировкой это проблему не решит.


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

Всего записей: 3179 | Зарегистр. 09-02-2003 | Отправлено: 15:38 14-09-2018
virussnu

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кстати, сейчас обнаружил забавный эффект:
Если целевой каталог имеет в названии знак "%", то в нём папки по дате создаются с пикающим звуком (как будто ошибка какая-то произошла). Папки создаются, но "пикают". ))
 
Добавлено:
Smitis

Цитата:
К сожалению, юникодный шрифт влияет иключительно на ОТОБРАЖЕНИЕ текста в консоли. Да, будут показываться не вопросительные знаки, а иероглифы, но с кодировкой это проблему не решит.

Я выше немного поправился. С юникодом проблем, как оказалось нет. Есть проблема с конкретным символом. Причём ТОЛЬКО если он в имени ЦЕЛЕВОЙ папки. Если нужно получить дату от файла с этим символом - всё работает.

Всего записей: 347 | Зарегистр. 15-09-2007 | Отправлено: 15:42 14-09-2018
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ради эксперимета попробовал на TC 8.5.2
Кнопка:
Command: %comspec%
Parameters: /u /v:on /c for %%i in (%S) do set "mdd=%%~ti" & md "%T!mdd:~6,4!-!mdd:~3,2!-!mdd:~0,2!"
 
На текущей панели файл с & и пробелами, на противоположной папка с иероглифами, пробелами и &. Папка создалась как надо.
 
А вот %, это действительно проблема.

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

Всего записей: 3179 | Зарегистр. 09-02-2003 | Отправлено: 15:48 14-09-2018 | Исправлено: Smitis, 15:50 14-09-2018
virussnu

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

Цитата:
Кнопка:  Command: %comspec%  Parameters: /u /v:on /c for %%i in (%S) do set "mdd=%%~ti" & md "%T!mdd:~6,4!-!mdd:~3,2!-!mdd:~0,2!"    

 
Хотите прикол?
Сделал кнопку с этими параметрами:

Цитата:
TOTALCMD#BAR#DATA
%comspec%
/u /v:on /c for %%i in (%S) do set "mdd=%%~ti" & md "%T!mdd:~6,4!-!mdd:~3,2!-!mdd:~0,2!"
WCMICONS.DLL,29
Создать каталоги по дате отмеченных файлов/каталогов
 
 
-1
 
 

С несколькими файлами и папками работает и "&" не помеха... Пока... Среди них не затесался файл с ОБЫЧНЫМ именем "FileTypes_(about).txt"
Для него не работает !!!!
Сейчас посмотрел - старый вариант кнопки тоже не пашет с этим файлом!!
 
Чё ваще происходит?!!!
 
Добавлено:
С папкой "FileTypes_(about)" тоже не работает!!!
 
Добавлено:
Блин, я с ума сейчас сойду...
 
Добавлено:
Короче, скобки ещё, оказываются, "проблемные" !!!
 
 
Добавлено:
Сцуко...
С папками "KC Softwares (SUMo, DUMo)" и "Universal Extractor (UniExtractor)" проблемы нет.
 
Ща пойду напьюсь...
 
Добавлено:
"KC Softwares ()" - проблем нет.
Удаляю из файла "KC Softwares" , оставляя только скобки "()" - не работает.
Чё делать?

Всего записей: 347 | Зарегистр. 15-09-2007 | Отправлено: 16:17 14-09-2018 | Исправлено: virussnu, 16:32 14-09-2018
GCRaistlin



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

Цитата:
Parameters: /u /v:on /c for %%i in (%S) do set "mdd=%%~ti" & md "%T!mdd:~6,4!-!mdd:~3,2!-!mdd:~0,2!"

И это работает? Потому что вот такое:

Код:
 
cmd /u /v:on /c for %A in ("a") do echo %A_!windir! & echo %A_!windir!
 

из комстроки выдает

Код:
 
"a"_C:\Windows
%A_!windir!
 


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

Всего записей: 3962 | Зарегистр. 18-04-2005 | Отправлено: 16:45 14-09-2018
YuS_2



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

Цитата:
Например, использовать LiteralPath.

Это самый простой путь, но мы ведь легких путей не ищем...
Нет, я решал заменой символов или экранированием, или даже сочетанием и того, и другого, как-то так...
 
virussnu

Цитата:
Чё ваще происходит?!!!

Не надо так "пугаться", это же cmd...
Возможно, файлы и папки, содержат пробелы, такие названия окавычиваются и возможно, поэтому код работает с некоторыми спецсимволами...
Всё дело в том, что TC делает такое ненастраиваемое окавычивание только для файлов/папок содержащих пробелы, а вот с остальными наименованиями, возможны различные коллизии.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 16:46 14-09-2018
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
virussnu
Я же сказал - тут нужен батник. Запускаете по той же кнопке:

Код:
 
%comspec% /c for %%i in (%S) do mdd.cmd %%~ti
 

NB: никаких кавычек тут не нужно. А уже внутри mdd.cmd извращаетесь как хотите.

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

Всего записей: 3962 | Зарегистр. 18-04-2005 | Отправлено: 16:48 14-09-2018
YuS_2



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

Цитата:
На текущей панели файл с & и пробелами, на противоположной папка с иероглифами, пробелами и &. Папка создалась как надо.

попробовать надо без пробелов, но со спецсимволами...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 16:49 14-09-2018
virussnu

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

Цитата:
Всё дело в том, что TC делает такое ненастраиваемое окавычивание только для файлов/папок содержащих пробелы, а вот с остальными наименованиями, возможны различные коллизии.

Но ведь с другими файлами/папками содержащими пробелы (и скобки!) проблем нет...

Всего записей: 347 | Зарегистр. 15-09-2007 | Отправлено: 16:53 14-09-2018
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
virussnu
В общем, пока нет шефа могу на работе немного повалять дурака
Раз Вас не устраивает PowerShell, тряхнул стариной, вот вам примерный скрипт на VBS.

Код:
' Предаваемые аргументы: "%T" "%WL"
Set fso = CreateObject("Scripting.FileSystemObject")
Set args = WScript.Arguments
destdir = args(0)
listfile = args(1)
With fso.OpenTextFile(listfile,1,false,-1)
    Do While Not .AtEndOfStream
        Set file = fso.GetFile(.ReadLine())
        lm = file.DateLastModified
        lm = Year(lm) & "-" & Right("0"&Month(lm),2) & "-" & Right("0"&Day(lm),2) & "-" & Right("0"& Hour(lm),2) & "-" & Right("0"&Minute(lm),2) & "-" & Right("0"&Second(lm),2)
        folder = destdir & lm
        If Not fso.FolderExists(folder) Then
            fso.CreateFolder(destdir & lm)
        End If
    Loop
End With

Сохраняете как CreateFolders.vbs в папке TC и таскаете всегда с собой как неотлемлемую часть TC.
Команда для кнопки: %SystemRoot%\system32\wscript.exe "%COMMANDER_PATH%\CreateFolders.vbs"
Параметры: "%T" "%WL"
Никаких проблем со спецсимволами, никаких проблем с кодировками. Создаёт папки вида YYYY-MM-DD-HH-MM-SS для каждого выделенного файла по его дате последней модификации. Откорректируйте скрипт по своему вкусу.

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

Всего записей: 3179 | Зарегистр. 09-02-2003 | Отправлено: 16:57 14-09-2018
virussnu

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
А как этот батник узнает о датах файлов? Мне ведь не просто папки надо создавать, а "по дате отмеченных файлов/каталогов ".
 
З.Ы.  
Звиняйте, камрады, ежели я криво чего объясняю и если "глупые вопросы" задаю. В энтом деле (батники, ком строка) я "ноль без палочки"...
 
Добавлено:
Smitis

Цитата:
Сохраняете как CreateFolders.vbs в папке TC и таскаете всегда с собой как неотлемлемую часть TC.  Команда для кнопки: %SystemRoot%\system32\wscript.exe "%COMMANDER_PATH%\CreateFolders.vbs"  Параметры: "%T" "%WL"  Никаких проблем со спецсимволами, никаких проблем с кодировками. Создаёт папки вида YYYY-MM-DD-HH-MM-SS для каждого выделенного файла по его дате последней модификации. Откорректируйте скрипт по своему вкусу.

Для каталогов не пашет.

Всего записей: 347 | Зарегистр. 15-09-2007 | Отправлено: 16:58 14-09-2018 | Исправлено: virussnu, 16:58 14-09-2018
Smitis



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

Цитата:
Для каталогов не пашет.

Ok

Код:
' Предаваемые аргументы: "%T" "%WL"
Set fso = CreateObject("Scripting.FileSystemObject")
Set args = WScript.Arguments
destdir = args(0)
listfile = args(1)
With fso.OpenTextFile(listfile,1,false,-1)
    Do While Not .AtEndOfStream
        obj = .ReadLine()
        If fso.FolderExists(obj) Then
            Set ff = fso.GetFolder(obj)
        Else
            Set ff = fso.GetFile(obj)
        EnD If
        lm = ff.DateLastModified
        lm = Year(lm) & "-" & Right("0"&Month(lm),2) & "-" & Right("0"&Day(lm),2) & "-" & Right("0"& Hour(lm),2) & "-" & Right("0"&Minute(lm),2) & "-" & Right("0"&Second(lm),2)
        folder = destdir & lm
        If Not fso.FolderExists(folder) Then
            fso.CreateFolder(destdir & lm)
        End If
    Loop
End With



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

Всего записей: 3179 | Зарегистр. 09-02-2003 | Отправлено: 17:08 14-09-2018 | Исправлено: Smitis, 19:28 14-09-2018
virussnu

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

Цитата:
Ok  

Теперь файлы "отвалились".
 
Добавлено:
Кстати, а это будет НА ЛЮБОЙ МАШИНЕ РАБОТАТЬ?
 
Добавлено:
При загрузке с Лайф Си-Ди, например, будет?

Всего записей: 347 | Зарегистр. 15-09-2007 | Отправлено: 17:13 14-09-2018
GCRaistlin



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

Цитата:
А как этот батник узнает о датах файлов?

Дату вы передаете параметром (%%~ti).

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

Всего записей: 3962 | Зарегистр. 18-04-2005 | Отправлено: 17:27 14-09-2018
virussnu

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

Цитата:
Теперь файлы "отвалились".    


Цитата:
Сценарий:    D:\Magic\WORK\totalcmd\files\date\CreateFolders.vbs
Строка:    12
Символ:    14
Ошибка:    Недопустимое число аргументов или присвоение значения свойства: 'fso.GetFile'
Код:    800A01C2
Источник:     Ошибка выполнения Microsoft VBScript

 
Добавлено:
GCRaistlin

Цитата:
Дату вы передаете параметром (%%~ti).

Ясно, спасибо.
 
Такая кнопка?

Цитата:
TOTALCMD#BAR#DATA
%comspec%
/c for %%i in (%S) do "%COMMANDER_PATH%\files\date\mdd.cmd" %%~ti
C:\Windows\System32\imageres.dll,-68
mdd
%COMMANDER_PATH%\files\date\
 
-1
 

 
А в самом "mdd.cmd" что должно быть?

Всего записей: 347 | Зарегистр. 15-09-2007 | Отправлено: 17:28 14-09-2018 | Исправлено: virussnu, 17:35 14-09-2018
   

Страницы: 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