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

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

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

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

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mat86
Цитата:
а так ничего не удаляет (  

Это я совсем налажал в коде - выходил из цикла досрочно...
Исправил код выше:
поменял GOTO :EOF на GOTO :METKA1
И добавил :METKA1 в конец блока.

Всего записей: 2704 | Зарегистр. 15-12-2003 | Отправлено: 10:18 21-12-2020
Xant1k



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fenrizz
Пробую через эксель разобраться. Но лучше встроенными средствами винды, если таковые есть.
 
Добавлено:
los
Там прям конкретно SORT винды, чё я unix sort не отличу)
 
Добавлено:
iNNOKENTIY21
Спасибо)
 
Я тебе ещё должен за замену байт ответить (с этим форумом древним без оповещении невозможно нормально общаться).

Всего записей: 2918 | Зарегистр. 20-02-2009 | Отправлено: 12:22 21-12-2020
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Xant1k
Можно пройтись по файлу - посчитать длины строк и создать массив "длина - номера строк с этой длиной". Потом перебрать элементы этого массива по убыванию, проходясь каждый раз по файлу снова и помещая в новый файл строки с соответствующими номерами. Ограничение: строки должны быть не длиннее 8191 символа.

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

Всего записей: 3094 | Зарегистр. 18-04-2005 | Отправлено: 12:39 21-12-2020
Milena88



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

Код:
GOTO :EOF

Это переход куда, или что это?

Всего записей: 54 | Зарегистр. 13-09-2017 | Отправлено: 15:23 21-12-2020
GCRaistlin



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

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

Всего записей: 3094 | Зарегистр. 18-04-2005 | Отправлено: 15:33 21-12-2020
YuS 2



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

Цитата:
Это переход куда, или что это?

:EOF - end-of-file

Всего записей: 3199 | Зарегистр. 03-02-2009 | Отправлено: 16:20 21-12-2020
Milena88



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

Всего записей: 54 | Зарегистр. 13-09-2017 | Отправлено: 20:43 21-12-2020
Xant1k



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Применил.. вывод в консоль есть, добавил запись в файл
Код:
echo %%a    > D:\Other\mylinks.txt
но сохраняет только последнюю, самую длинную строку
 
А чисто на пшелле как выглядит команды с записью в файл? Что-то типо этого
PowerShell.exe -ExecutionPolicy ByPass -command ". gc ssl.txt | sort -Property {$_.length}; Start-Transcript -Path "D:\Other\mylinks.txt" -NoClobber" у меня не работает.
 
И ещё можно сортировку по алфавиту добавить с учётом цифр и символов?
 
Ещё есть косяк(?) с кодировкой.. строки вида
http://0x1.tv/index.php?title=Категория:HasSpeaker&pageuntil=Методическая+поддержка+педагогов+по+переходу+на+российские+операционные+системы+семейства+«Альт»+—+направления+работы%2C+достигнутые+результаты%2C+планы+на+будущее+%28Татьяна+Губина%2C+OSEDUCONF-2019%29
 
http://89.218.140.251/ek/Попов%20С.А.%20Информационные%20технологии%20переводчика.pdf
 
становятся
 
http://0x1.tv/index.php?title=ђ?ђш‘'ђзђ?ђ?‘?ђс‘?:HasSpeaker&pageuntil=ђ?ђз‘'ђ?ђ?ђс‘Шђз‘?ђуђш‘?+ђхђ?ђ?ђ?ђз‘?ђђуђш+ђхђзђ?ђшђ?ђ?ђ?ђ?ђ?+ђхђ?+ђхђз‘?ђз‘:ђ?ђ?‘?+ђ?ђш+‘?ђ?‘?‘?ђсђь‘?ђуђсђз+ђ?ђхђз‘?ђш‘Еђсђ?ђ?ђ?‘<ђз+‘?ђс‘?‘'ђзђ?‘<+‘?ђзђ?ђзђь‘?‘'ђ?ђш+‚<ђ?ђ>‘?‘'‚>+ў?"+ђ?ђшђх‘?ђшђ?ђ>ђзђ?ђс‘?+‘?ђшђ+ђ?‘'‘<%2C+ђ?ђ?‘?‘'ђсђ?ђ?‘?‘'‘<ђз+‘?ђзђъ‘?ђ>‘?‘'ђш‘'‘<%2C+ђхђ>ђшђ?‘<+ђ?ђш+ђ+‘?ђ?‘?‘%ђзђз+%28ђчђш‘'‘?‘?ђ?ђш+ђ"‘?ђ+ђсђ?ђш%2C+OSEDUCONF-2019%29  
 
http://89.218.140.251/ek/ђ?ђ?ђхђ?ђ?%20ђц.ђ?.%20ђ?ђ?‘"ђ?‘?ђ?ђш‘Еђсђ?ђ?ђ?‘<ђз%20‘'ђз‘:ђ?ђ?ђ>ђ?ђ?ђсђс%20ђхђз‘?ђзђ?ђ?ђ?‘Шђсђуђш.pdf  
 
и в конце каждой строки добавился пробел.
 
-
Пока что самый лучший вариант который попался это

Код:
@echo off
setlocal disableDelayedExpansion
 
set "file=ssl.txt"
set "tempLoc=sortLinesTemp"
 
md "%tempLoc%"
set "cnt=0"
for /f usebackq^ delims^=^ eol^= %%A in ("%file%") do (
  set /a cnt+=1
  set "ln=%%A"
  setlocal enableDelayedExpansion
  echo(!ln!>"%tempLoc%\f!cnt!"
  endlocal
)
(for /f %%F in ('dir /b /o-s "%tempLoc%"') do type "%tempLoc%\%%F")>"%file%.new"
move /y "%file%.new" "%file%" >nul
rd /s /q "%tempLoc%"
type "%file%"

но не нравится тем что создаёт папку с временными файлами и сортировка идёт по уменьшению.

Всего записей: 2918 | Зарегистр. 20-02-2009 | Отправлено: 22:36 21-12-2020 | Исправлено: Xant1k, 23:34 21-12-2020
lexapass



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Xant1k
Используйте >> для добавления последующих строк в файл.
Единичный > всегда перезаписывает файл, т.е. хорош только для инициализации = записи первой строки в файл, в Вашей терминологии последней.

Всего записей: 550 | Зарегистр. 11-10-2004 | Отправлено: 22:54 21-12-2020 | Исправлено: lexapass, 22:55 21-12-2020
YuS 2



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

Цитата:
чисто на пшелле как выглядит команды с записью в файл?

script.ps1

Код:
param(
    # кодировка исходного файла
    $srcenc = 'UTF8',
    # кодировка целевого файла
    $dstenc = 'UTF8',
    # исходный файл
    $source = 'test.txt',
    # целевой файл
    $destination = 'out.txt'
)
 
gc $source -enc $srcenc|sort {$_.length},{$_}|out-file $destination -enc $dstenc

Всего записей: 3199 | Зарегистр. 03-02-2009 | Отправлено: 09:08 22-12-2020
iNNOKENTIY21



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

Цитата:
А чисто на пшелле как выглядит команды с записью в файл?  

Тогда из батника все выкинуть, кроме вызова PowerShell.exe и получится батник, только для запуска PowerShell

Код:
gc -LiteralPath '.\test.txt' | Sort-Object -Property Length, {$_} | Out-File -LiteralPath '.\test-sorted.txt' -Force

читает файл test.txt в текущей папке | сортирует по длине строки, строки с одинаковой длиной сортирует по алфавиту | сохраняет в файл test-sorted.txt в текущей папке с перезаписью.


----------
Спасибо медикам!

Всего записей: 3019 | Зарегистр. 16-08-2012 | Отправлено: 09:10 22-12-2020
JekG

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую
Подскажите еще по такому вопросу
 
Есть папка D:Backup\ в нее каждый день создается подпапка бекап с текущей датой в назвнии и в эту папку копируются файлы.  
Дабы не захламлять сервер удаляю батником папки старше 3 дней
 

Код:
@cd /d "D:Backup\" && @forfiles /d -3 /C "cmd /c if @isdir==TRUE echo rd /s /q @file"

 
Как уточнить задачу так, чтобы удаление стартовало при наличии в папке более трех подпапок? если подпапок три или меньше - просто выход.  

Всего записей: 2502 | Зарегистр. 12-10-2005 | Отправлено: 10:18 22-12-2020
Fenrizz



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
JekG
Так же, как здесь, только немного переделать
 

Цитата:
set cnt=0
for /F %%A in ('dir /b/o:N/a:D C:\BACKUP\AAA\') do set /a cnt+=1
if %cnt% gtr 3 (
echo OK )

Всего записей: 410 | Зарегистр. 12-09-2017 | Отправлено: 11:06 22-12-2020 | Исправлено: Fenrizz, 11:07 22-12-2020
yurkesha



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fenrizz
Цитата:
if %cnt% gtr 3
для FOR /F есть интересный параметр "skip=3" - главное правильную сортировку задать

Всего записей: 2704 | Зарегистр. 15-12-2003 | Отправлено: 20:25 22-12-2020
Xant1k



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS 2
Немного про другое имелось ввиду. Что добавить к текущему варианту в конце.
 
С кодировкой сделал так PowerShell.exe -ExecutionPolicy ByPass -command ". gc -LiteralPath '.\ssl.txt' -enc UTF8 | Sort-Object -Property Length, {$_} | Out-File -LiteralPath '.\test-sorted.txt' -enc UTF8 -Force
вроде работает.
 
Добавлено:
iNNOKENTIY21
Ну можно и так) но тогда лучше наверное без бантиков, и в профильную тему перебраться?
 
>строки с одинаковой длиной сортирует по алфавиту
вот это прям то что надо

Всего записей: 2918 | Зарегистр. 20-02-2009 | Отправлено: 15:49 23-12-2020 | Исправлено: Xant1k, 17:12 23-12-2020
mat86



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yurkesha не срабатывает все равно  
Fenrizz заменил на
Цитата:
echo DELETE
так ничего не удаляет

Цитата:
"Свернуть все окна.scf" - файл в правильной (DOS 866) кодировке?
да в DOS 866 проверял несколько раз
 

Всего записей: 424 | Зарегистр. 19-03-2009 | Отправлено: 20:46 23-12-2020
Fenrizz



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mat86
Так он и не должен удалять - это для отладки
Убирайте условия по одному и смотрите пишет он в консоли DELETE или нет.

Всего записей: 410 | Зарегистр. 12-09-2017 | Отправлено: 21:47 23-12-2020 | Исправлено: Fenrizz, 21:47 23-12-2020
yurkesha



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

Код:
@ECHO OFF
SET "RELETIVE_PATH=AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar"
for %%a in ("%UserProfile%") do (for /d %%i in ("%%~dpa*") do (CALL :METKA "%%i\%RELETIVE_PATH%"))
GOTO :EOF
 
:METKA
SET "WORK_DIR=%~1"
FOR /r "%WORK_DIR%" %%k IN (*) DO (
IF /I NOT "%%~nxk"=="111.txt" (
IF /I NOT "%%~nxk"=="222.txt" (
DEL /q "%%~k"
)
)
)
GOTO :EOF  

На этот раз все внимательно перепроверил несколько раз. Неспеша

Всего записей: 2704 | Зарегистр. 15-12-2003 | Отправлено: 21:49 24-12-2020
mat86



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yurkesha огромное спасибо, все работает и в xp в том числе

Всего записей: 424 | Зарегистр. 19-03-2009 | Отправлено: 08:56 25-12-2020
Xant1k



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

Цитата:
С кодировкой сделал так PowerShell.exe -ExecutionPolicy ByPass -command ". gc -LiteralPath '.\ssl.txt' -enc UTF8 | Sort-Object -Property Length, {$_} | Out-File -LiteralPath '.\test-sorted.txt' -enc UTF8 -Force
вроде работает.

Заметил что выходной файл получается в utf8 with BOM. Как исправить, т.е. к простому UTF8 привести?

Всего записей: 2918 | Зарегистр. 20-02-2009 | Отправлено: 09:31 27-12-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

Компьютерный форум 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