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

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



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
Слушайте, я не имею времени на демагогию. Если не можете помочь, игнорируйте мои сообщения.

Всего записей: 333 | Зарегистр. 12-03-2003 | Отправлено: 11:12 20-05-2022
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Propretor
Вы, во-первых, не понимаете значения слова "демагогия". А во-вторых, тратите время (которого у вас нет) на поиски того, чего нет в природе. Наглядная иллюстрация анекдота про "чего тут думать - прыгать надо".

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

Всего записей: 3480 | Зарегистр. 18-04-2005 | Отправлено: 11:22 20-05-2022
Propretor



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

Всего записей: 333 | Зарегистр. 12-03-2003 | Отправлено: 12:05 20-05-2022
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Propretor
Да нет, не могли бы. Иначе бы поспорили. Ведь от комментария-то не удержались.

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

Всего записей: 3480 | Зарегистр. 18-04-2005 | Отправлено: 12:13 20-05-2022
Propretor



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
тролль, не нужно засорять ветку!

Всего записей: 333 | Зарегистр. 12-03-2003 | Отправлено: 13:04 20-05-2022
Inoz2000



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
что-то такоэ
Код:
@echo off
cd/d "%~dp0"
chcp 1251>nul
for /f "delims=" %%a in ('dir /b *.txt') do (
echo %%a>utf.tmp
chcp 65001>nul
cmd /c "for /f "delims=" %%u in ('type utf.tmp') do @echo f|xcopy "%%a" "XcopyedFiles\%%u">nul"
)
del /q/f utf.tmp
pause
это если только файлы не попали  откуда-то извне в другой кодировке


----------
Мы все умрём. (-:

Всего записей: 3753 | Зарегистр. 23-04-2009 | Отправлено: 13:14 20-05-2022
Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Propretor
Если имеется установленный Far Manager 3.0, то запускаете в папке с файлами след скрипт:
 
recode_filename.lua
========
local Utf8=1 -- =1 convert AnsiToUtf8, =0 Utf8ToAnsi
local count,mask,path = 0,"*",APanel.Path
local function Utf8ToAnsi(s) return win.WideCharToMultiByte(win.MultiByteToWideChar(s,65001),1251) end
local function AnsiToUtf8(s) return win.WideCharToMultiByte(win.MultiByteToWideChar(s,1251),65001) end
far.RecursiveSearch(path,mask,
  function(item,fullpath)
    if not item.FileAttributes:find("d") then -- recode filename only, not folder (directory)
      local fname = Utf8==0 and Utf8ToAnsi(item.FileName) or AnsiToUtf8(item.FileName)
      win.RenameFile(fullpath,fullpath:match("^.+\\")..fname)
      count=count+1
    end
  end,
  7
)
print("file(s) renamed: "..count)
========
 
Будут перекодированы имена у всех файлов, в том числе и в подпапках. Перед применением лучше потренироваться на "кошках", чтобы предварительно оценить результат. Если перекодировали с Utf8=0 вместо 1-го 2 раза, то просто перекодируйте назад с Utf=0.

Всего записей: 2948 | Зарегистр. 16-06-2007 | Отправлено: 13:27 20-05-2022 | Исправлено: Alexyz21, 13:41 20-05-2022
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Propretor
Inoz2000
Alexyz21
Зачем вся эта хренотень, непонятно...

Цитата:
В файловых системах NTFS, а также FAT с поддержкой длинных имён, имена файлов записываются в UTF-16LE.

Всего записей: 10853 | Зарегистр. 11-03-2002 | Отправлено: 13:38 20-05-2022
Propretor



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Inoz2000
Спасибо огромное, сижу, разбираюсь, осмысливаю
 
Alexyz21
Спасибо, но нужно решение в виде командного файла.

Всего записей: 333 | Зарегистр. 12-03-2003 | Отправлено: 13:39 20-05-2022
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Propretor
У вас неверные исходные посылки, поэтому вы занимаетесь ерундой. И вам даже в этом помогают.
 
Inoz2000
Alexyz21
Не забывайте, что в конце концов вы даете Windows задание создать/переименовать файл. Она сделает это в той кодировке, в которой делает всегда.

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

Всего записей: 3480 | Зарегистр. 18-04-2005 | Отправлено: 14:00 20-05-2022
Inoz2000



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

Всего записей: 3753 | Зарегистр. 23-04-2009 | Отправлено: 14:12 20-05-2022
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Inoz2000
Чтобы прочитать ваше сообщение, инструмент, которым вы это будете делать, должен уметь переключать кодировку. Инструмент, которым вы читаете и пишете имена файлов, этого делать не умеет - он работает с Юникодом, и все тут.

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

Всего записей: 3480 | Зарегистр. 18-04-2005 | Отправлено: 14:25 20-05-2022
Inoz2000



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

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

у нас тут инструмент 'Командная строка' умеет команду chcp - как думаете, для чего она?
есть ещё vbs, в котором я не силён… пока спецов не появлялось, решаем на cmd.

----------
Мы все умрём. (-:

Всего записей: 3753 | Зарегистр. 23-04-2009 | Отправлено: 14:30 20-05-2022
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Inoz2000
Имена файлов пишет не командная строка. Смотрите:

Код:
 
md А
chcp 1251
md ┴
 

Крякозябр в последней строке - это Б в кодировке 1251. Выполните этот файл, и получите каталоги А и Б. Их имена будут записаны в файловой системе в Юникоде.

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

Всего записей: 3480 | Зарегистр. 18-04-2005 | Отправлено: 14:47 20-05-2022
Inoz2000



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

Цитата:
Выполните этот файл
а вы переименуйте с помощью командной строки файл "Тем РЅРµ менее.txt" (пример взят из поста выше.) и после успешного выполнения напишите тут решение вопроса для Propretor

Всего записей: 3753 | Зарегистр. 23-04-2009 | Отправлено: 15:00 20-05-2022
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Inoz2000
Откуда его взять и во что переименовать?

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

Всего записей: 3480 | Зарегистр. 18-04-2005 | Отправлено: 15:15 20-05-2022
ipmanyak



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

Код:
 
@ECHO OFF
IF EXIST Files1 DEL Files1  
FOR %%f IN (*.pdf) DO ECHO %%f >> Files1
 
echo on
<"Files1">"%~dp0Files2" (
for /f "tokens=* delims==" %%i in ('more') do @(
 >nul chcp 65001
 set x=%%i
 cmd /v/c echo !x!
 
)
>nul chcp 866
)
 
:: Если переменная назначается внутри цикла, то знак % заменяется на знак !
::
setlocal enableextensions enabledelayedexpansion
 
:: считаем строки в файле
  Set Lines=0
  For /F "usebackq" %%L In ("Files1") Do (Set /A Lines+=1)
:: Выводим сообщение с числом строк
   Echo !Lines!  
   set /a cnt=0  
:loop
   set /a cnt+=1
   echo %cnt%
   pause
   for /F "skip=%cnt% usebackq eol=" %%J in ("Files1") do (
    set name1=%%J
    goto next  
    )
:next  
   for /F "skip=%cnt% usebackq eol=" %%J in ("Files2") do (
   set name2=%%J
   goto next2
     )
:next2
   echo name1=%name1%
   echo name2=%name2%
rem    set name1=%name1:~0,-1%
rem   set name2=%name2:~0,-1%
    rename "%name1%" "%name2%"
   if %cnt%==%Lines%  goto end
   goto loop  
  )
:end
 

 
Но есть баг, если  в имени файла  две точки подряд или пробелы, типа  
Вася_2014г..pdf  или  Вася Пупкин.pdf
то не найдет потом файл.
Допиливать влом, сам  допили. Возможно спасет взятие имен в кавычки,  а может и нет, так как в именах файлах в списке вроде есть пробел и его придется убирать..
 


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

Всего записей: 11226 | Зарегистр. 10-12-2003 | Отправлено: 15:42 20-05-2022 | Исправлено: ipmanyak, 16:00 20-05-2022
GCRaistlin



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

Код:
 
@echo off
md Ё
chcp 1251
md и
 

Возвращает:

Код:
 
Active code page: 1251
A subdirectory or file Ё already exists.
 

Символы разные, а имя у каталога - юникодное - одно и то же.

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

Всего записей: 3480 | Зарегистр. 18-04-2005 | Отправлено: 16:14 20-05-2022
Propretor



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ipmanyak
Благодарствую! Есть почва для "допиливания", дальше уже сам справлюсь! Всех благ!

Всего записей: 333 | Зарегистр. 12-03-2003 | Отправлено: 20:12 20-05-2022
ipmanyak



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Propretor еще есть нюанс, счетчик  нужно начинать с  -1, или  пихать в списки  файлов лишнюю пустую строку, иначе первый файл списка может не переименовать.


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

Всего записей: 11226 | Зарегистр. 10-12-2003 | Отправлено: 10:54 21-05-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