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

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

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

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

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



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

Код:
ForFiles /p %temp% /s /d -20 /c "cmd /c echo @path"

можно вывести количество файлов (например, 20шт.) вместо их списка?

Всего записей: 847 | Зарегистр. 23-01-2006 | Отправлено: 14:54 01-08-2022 | Исправлено: DeZz, 14:55 01-08-2022
ipmanyak



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DeZz  Не совсем прозрачно,  но как-то так:      

Код:
                                           
set q=0                                                                                  
for /f  %%A in ('ForFiles /p %temp% /s /d -20 /c "cmd /c ECHO @PATH"') do set /a q+=1"  
ECHO %q%                                                                                
 



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

Всего записей: 11226 | Зарегистр. 10-12-2003 | Отправлено: 16:54 01-08-2022 | Исправлено: ipmanyak, 16:56 01-08-2022
DeZz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ipmanyak
да, спс, работает
 
Еще вопрос по теме. Сам процесс удаления как-то можно ускорить? Просто если это с десяток файлов еще ладно, но когда сотни...
Подозреваю, что ForFiles для такой задачи не совсем подходит.
Еще печалит факт, что удаление проходит минуя корзину.

Всего записей: 847 | Зарегистр. 23-01-2006 | Отправлено: 17:22 01-08-2022 | Исправлено: DeZz, 17:24 01-08-2022
ipmanyak



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DeZz Корзина , хз, не проверял, наверно да  не кладет туда.  И да, forfiles удаляет медленно, так как передает на удаление по 1  файлу.  И потом, мы что ли куда-то торопимся? Хочешь быстро удалять,  юзай  команду DEL /F/Q/S *. * > NUL , но не forfiles. Тогда и в корзину попадет. Использование корзины дополнительно замедляет удаление.


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

Всего записей: 11226 | Зарегистр. 10-12-2003 | Отправлено: 18:18 01-08-2022 | Исправлено: ipmanyak, 18:19 01-08-2022
Arcadaw

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скажите, а можно ли назначить на какую клавиатурное сокращение свой порядок действий?
Ну, например, нажимаю Alt+PrSc  - копируется активное окно в буфер. У меня есть скрипт, который мне любезно предоставили в этом топике. Этот скрипт PS сохраняет содержимое буфера в файл PNG с датой-временем. Хотелось бы нажать кнопки "Alt+PrSc" и чтобы сразу скопировалось активное окно в буфер и сразу же сбросилось в файл.

Всего записей: 1251 | Зарегистр. 25-03-2004 | Отправлено: 18:47 01-08-2022
BorlandIMHO

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Arcadaw
Если винда 10+ - по идее, работает Win+Alt+PrtScr, без всяких скриптов.
(Через имеющийся, по дефолту, в винде "Xbox Game Bar").
 
 
Добавлено:
DeZz

Цитата:
для  
...
можно вывести количество файлов (например, 20шт.) вместо их списка?

Количество файлов с датой последнего изменения {старше 20 дней}:

Код:
powershell -nologo -command "$(gci -Path '%temp%' | Where-Object {$_.LastWriteTime -lt $(get-date).AddDays(-20)}).count"

Работает быстрее, чем forfiles...
Добавлено:
И можно прикрутить удаление в корзину https://social.technet.microsoft.com/Forums/en-US/ff39d018-9c38-4276-a4c9-3234f088c630/how-can-i-delete-quotto-recycle-binquot-in-powershell-instead-of-remove-item-?forum=winserverpowershell
Но это уже не однострочником, наверное...

----------
http://www.imho.ws

Всего записей: 1600 | Зарегистр. 12-10-2006 | Отправлено: 22:44 01-08-2022 | Исправлено: BorlandIMHO, 23:33 01-08-2022
gutasiho

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Просьба помочь с батником бекапа папки, который несколько запусков или дней работает нормально, а затем не может определить текущее время и выдает ошибку:
   
Если все нормально, выходной бекап имеет штамп даты и времени:
This_Folder_Backup_2022-07-25_11-34.zip
Когда возникает баг, создается пустой архив с именем без времени:
This_Folder_Backup_2022-07-25_.zip
Если закомментировать время, бекап создается, багов не возникает:
This_Folder_Backup_2022-07-25.zip
Через какое-то время батник снова работает нормально, закономерность уловить не удается.
Батник в кодировке 866, формат даты в системе 19.11.2021 09:05
Почему в штампе даты формат 2022-07-25, а не 25.07.2022 - бекапов много, а при таком формате по крайним справа цифрам визуально легче отслеживать нужный бекап.
В архиве батник и сопутствующее, в батнике пара строк с пояснениями.

Всего записей: 3121 | Зарегистр. 14-09-2020 | Отправлено: 10:04 02-08-2022
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, gutasiho
0. Используйте кавычки вокруг имен файлов.
1. У Вас нет ведущего нуля во времени(возможно и в дате), вместо этого пробел. Просто заменить все пробелы на 0.
.\_maintenance\7za.exe u -tzip -mx9 -ssw -r0 "..\%FOLDER_BACKUP: =0%.zip"

Всего записей: 1868 | Зарегистр. 07-08-2002 | Отправлено: 10:17 02-08-2022 | Исправлено: Alex_Piggy, 10:18 02-08-2022
gutasiho

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

Всего записей: 3121 | Зарегистр. 14-09-2020 | Отправлено: 10:40 02-08-2022
BorlandIMHO

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
gutasiho
Проблема, я думаю, в период с 00:00 по 09:59:59 ...
И возникает из-за лишнего пробела.
Я решал так. И ниже ещё один вариант (более правильный, ибо не зависит от системной локали).
 

Цитата:
Используйте кавычки вокруг имен файлов.

Ну, это в любом случае полезно.

----------
http://www.imho.ws

Всего записей: 1600 | Зарегистр. 12-10-2006 | Отправлено: 10:47 02-08-2022 | Исправлено: BorlandIMHO, 11:01 02-08-2022
gutasiho

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
Цитата:
Проблема, я думаю, в период с 00:00 по 09:59:59 ...
Сегодня точно попало в этот промежуток, но вроде и вне промежутка были баги.
Цитата:
Я решал так. И ниже ещё один вариант
Ыыы, я такую сложную конструкцию не соображу вставить в батник, просьба показать что ею заменить.

Всего записей: 3121 | Зарегистр. 14-09-2020 | Отправлено: 11:23 02-08-2022
BorlandIMHO

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

Код:
@echo off
:: Бекап папки
echo.
echo                 Выполняется бекап этой папки (выходной формат .zip)...
for /f "usebackq tokens=2 delims==" %%A in (`wmic os get LocalDateTime /value`) do set "TIMESTAMP=%%A"
set "FOLDER_BACKUP=This_Folder_Backup_%TIMESTAMP:~0,4%-%TIMESTAMP:~4,2%-%TIMESTAMP:~6,2%_%TIMESTAMP:~8,2%-%TIMESTAMP:~10,2%-%TIMESTAMP:~12,2%"
:: батник Folder_Backup.bat поместить в папку, бекап которой создается
:: папку \_maintenance\ поместить в папку, бекап которой создается
:: файл 7za.exe должен быть в папке \_maintenance\
:: архив бекапа будет помещен рядом с папкой, бекап которой создается
.\_maintenance\7za.exe u -tzip -mx9 -ssw -r0 -- "..\%FOLDER_BACKUP%.zip"
 
pause
goto :EOF
 

Поскольку таймштамп в скрипте используется только один раз - смысла выносить его в подпрограмму в данном случае нет.

----------
http://www.imho.ws

Всего записей: 1600 | Зарегистр. 12-10-2006 | Отправлено: 11:47 02-08-2022
ipmanyak



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
gutasiho  Как сформировал переменную  FOLDER_BACKUP   такую дату и имеешь
 

Код:
@echo off                                                                              
:: Получение даты\времени независимо от региональных настроек и формата                
For /F "skip=1 tokens=1-6" %%A In (                                                    
'wmic Path Win32_LocalTime Get Year^,Month^,Day^,Hour^,Minute^,Second /format:table'  
) Do (                                                                                
    Echo Date in DD.MM.YYYY format: %%A.%%D.%%F                                        
    Echo Time in HH.MM.SS format:   %%B:%%C:%%E                                        
)                                                                                      
 


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

Всего записей: 11226 | Зарегистр. 10-12-2003 | Отправлено: 11:48 02-08-2022
gutasiho

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy BorlandIMHO ipmanyak
Спасибо за помощь!
 

Всего записей: 3121 | Зарегистр. 14-09-2020 | Отправлено: 11:54 02-08-2022
BorlandIMHO

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

Цитата:
 Получение даты\времени независимо от региональных настроек и формата

Таки докопаюсь...
Приведённый код просто замечателен тем, что позволяет получить численные значения каждого из компонентов даты/времени, но вот ведущих нулей к дате/времени не добавляет. Соответственно, при дне месяца/месяце/часе/минуте/секунде <10  вывод не будет соответствовать заявленному формату.
Дополнительное форматирование (дописать ведущий ноль) можно, к примеру, сделать так (второй пример кода).

----------
http://www.imho.ws

Всего записей: 1600 | Зарегистр. 12-10-2006 | Отправлено: 14:50 02-08-2022
gutasiho

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Наступило время Ч с 00:00 по 09:59:59 , батники с правками от BorlandIMHO и Alex_Piggy  время цепляют правильно. Спасибо!

Всего записей: 3121 | Зарегистр. 14-09-2020 | Отправлено: 11:16 03-08-2022
Simoid



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Привет всем.
Прошу помочь написать bat-файл под следующую задачу:
 
1. Есть папка c:\Folder\
2. В ней 100500 подпапок с именем 2022-08-05_09-59-11, 2022-08-03_15-17-10 и т.д.
3. В каждой подпапке много разных текстовых файлов. Среди которых есть файл с единым названием filtered.txt, который присутствует в каждой подпапке.
 
Необходимо:
1. Объединить все filtered.txt (с ненуллевым размером, так как бывают и пустые файлы) в один файл filtered_all.txt.
2. Удалить полные дубли строк из финального файла filtered_all.txt
 
На выходе должен получиться txt-файл с суммарными данными без дублей.

Всего записей: 896 | Зарегистр. 23-07-2005 | Отправлено: 15:47 05-08-2022 | Исправлено: Simoid, 16:20 05-08-2022
BorlandIMHO

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

Код:
@echo OFF
pushd "c:\Folder"||exit
copy /y nul "filtered_all.txt"
for /f "tokens=*" %%A in ('dir /B /S filtered.txt') do (
    for /F "tokens=*" %%B in ('type %%~fA') do (
        find "%%B" < "filtered_all.txt" || 1>>"filtered_all.txt" echo %%B
    )
)
popd
goto :EOF



----------
http://www.imho.ws

Всего записей: 1600 | Зарегистр. 12-10-2006 | Отправлено: 16:31 05-08-2022 | Исправлено: BorlandIMHO, 20:25 05-08-2022
Simoid



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
BorlandIMHO
Огромное спасибо за помощь. Сегодня проверю и отпишусь.

Всего записей: 896 | Зарегистр. 23-07-2005 | Отправлено: 16:38 05-08-2022
Simoid



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
BorlandIMHO
Скрипт зависает после фразы "1 file(s) copied." и ничего визуально не происходит.

Всего записей: 896 | Зарегистр. 23-07-2005 | Отправлено: 19:00 05-08-2022
Открыть новую тему     Написать ответ в эту тему

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

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru