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

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

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

Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Widok



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

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 5
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Урок bat-аники (для начинающих)
· Курс лекций для начинающих. Полезно и просто описано
· Набор GNU утилит для win32
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
· Справка по командам в виде Html
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
· Уильям Станек - Командная строка Microsoft Windows (вплоть до w2k3)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек)
 
Старая версия первого сообщения

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 12:08 19-11-2007 | Исправлено: Dmitriy05, 22:49 13-04-2008
Tipulatoid



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

Код:
@echo off
setlocal enabledelayedexpansion
 
set from_file=222.txt
set to_file=111.cfg
 
 
set count=0
for /f "delims=*" %%a in (%from_file%) do (
   set /a count+=1
   if !count!==1 set string_to_add=%%a
)
 
set count=0
for /f "delims=*" %%a in (%to_file%) do (
   set /a count+=1
   if !count! neq 268 (
      echo %%a>>temp
   ) else (
      echo %string_to_add%>>temp
   )
)
 
del /q %to_file% 2>nul
ren temp %to_file%

 
Пустые строки не считаются. Т.е. ты должен указать номер строки для замены не как Блокнот сообщает, а подсчитать только непустые строки, и забить номер нужной строки для замены.
Сделай сначала копии файлов и потести на них.

Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 21:48 06-08-2008 | Исправлено: Tipulatoid, 21:49 06-08-2008
DenFed

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
Как я уже и писал все переменные среды в порядке.
Может это NOD или наоборот вирус какойнибудь?

Всего записей: 103 | Зарегистр. 28-03-2005 | Отправлено: 22:12 06-08-2008
SerDIDG

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Огромное спасибо, скрипт работает. Но что делать если файл 111.cfg находится в папке (например data\111.cfg). И в самом файле есть закомментированные строки, которые удаляются после скрипта.
 
Вот сам файл.  
http://files.filefront.com/111cfg/;11386917;/fileinfo.html

Всего записей: 4 | Зарегистр. 06-08-2008 | Отправлено: 22:17 06-08-2008
Tipulatoid



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SerDIDG
У тебя сложный по структуре файл. Тут нужно sed использовать. Сам я утилите этой не разбираюсь. Авось кто подскажет из разбирающихся.

Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 10:36 07-08-2008
SerDIDG

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо, буду копаться.

Всего записей: 4 | Зарегистр. 06-08-2008 | Отправлено: 16:03 07-08-2008
Smitis



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

Цитата:
Подскажите програмку для создания бат файлов. Что бы не руками писать.

Ещё пара программ:
- Dr.Batcher http://rl-team.net/warez/1146210187-dr.batcher-1.2.html
- Easy Batch Builder (в розыске)

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

Всего записей: 2409 | Зарегистр. 09-02-2003 | Отправлено: 23:48 07-08-2008
vitrzn



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

Всего записей: 1358 | Зарегистр. 28-10-2007 | Отправлено: 01:03 09-08-2008 | Исправлено: vitrzn, 01:08 09-08-2008
sanb



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
как мне через батник получить инфу о операционной системе и вывести её в текстовик?
Заранее благодарен!
 
и ещё, можно ли воспользоваться системным просмотрщиком архивов для упаковки в zip и какие команды он поддерживает? а вообще подойдёт либой архиватор, главное системный, чтобы можно было обойтись без сторонних компонентов используя только один батник, может cab

Всего записей: 2189 | Зарегистр. 26-07-2006 | Отправлено: 14:12 09-08-2008 | Исправлено: sanb, 15:03 09-08-2008
Tipulatoid



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sanb
ver>os.txt

Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 14:46 09-08-2008
sanb



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Tipulatoid
а как узнать больше информации о ОС, нужнно ещё какая версия SP (1,2 или 3) и какая локализация (Rus, Eng ...)

Всего записей: 2189 | Зарегистр. 26-07-2006 | Отправлено: 14:58 09-08-2008
Tipulatoid



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sanb
Тогда systeminfo>os.txt Можно предварительно отфильтровать только необходимую инфу, если надо
На второй вопрос - makecab /?

Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 15:17 09-08-2008 | Исправлено: Tipulatoid, 15:22 09-08-2008
sanb



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

Цитата:
Цитата:
как избавиться от каракуль в report.txt?
 
Сначала выполни команду chcp 1251>nul Чтобы потом вернуть родную кодировку, выполни chcp 866>nul  

 
а можно написать chcp 1251>nul в начале батника а chcp 866>nul в конце?
 
у меня такой батник:
 

Код:
chcp 1251>nul  
systeminfo > sysinfo.txt
tasklist > process.txt
dir /s /d > aimp_components.txt
7z a -t7z report.7z Data\ process.txt aimp_components.txt sysinfo.txt
del /q process.txt aimp_components.txt sysinfo.txt
chcp 866>nul

 
кирилица нормально отображается только в aimp_components.txt, что нужно сделать чтобы она нормально отображалась в sysinfo.txt и process.txt?
 
никак не пойму синтаксис makecab

Код:
 
MAKECAB [/V[n]] [/D var=value ...] [/L dir] source [destination]
MAKECAB [/V[n]] [/D var=value ...] /F directive_file [...]
 
  source         File to compress.
  destination    File name to give compressed file.  If omitted, the
                 last character of the source file name is replaced
                 with an underscore (_) and used as the destination.
  /F directives  A file with MakeCAB directives (may be repeated).
  /D var=value   Defines variable with specified value.
  /L dir         Location to place destination (default is current directory).
  /V[n]          Verbosity level (1..3).

 
хочу им заменить 7z, нужно в cab запаковать папку Data и этих 3 текстовика...
 
Заранее благодарен!

Всего записей: 2189 | Зарегистр. 26-07-2006 | Отправлено: 19:32 09-08-2008
Tipulatoid



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sanb
Похоже, makecab не позволяет паковать папки. Так что сей вариант помещает в cab - файл полученные отчеты и содержимое папки Data, а не саму папку:

Код:
@echo off
 
systeminfo>input.del
call :decode
ren output.del sysinfo.txt
 
tasklist /v>input.del
call :decode
ren output.del process.txt
 
dir /s /d>input.del
call :decode
ren output.del aimp_components.txt
 
del /q decode.js 2>nul
 
echo sysinfo.txt>list.del
echo process.txt>>list.del
echo aimp_components.txt>>list.del
for /f "delims=*" %%a in ('dir /b Data\') do echo "Data\%%a">>list.del
 
makecab /f list.del>nul
move disk1\1.cab
rmdir disk1
ren 1.cab report.cab
del /q setup.inf setup.rpt list.del process.txt aimp_components.txt sysinfo.txt 2>nul
 
goto :eof
 
 
:decode
if not exist decode.js (
   (
   echo var FSO_ForReading = 1;
   echo var FSO_ForWriting = 2;
   echo function GetFileContent^( filename ^)
   echo ^{
   echo     var fso = WScript.CreateObject^( "Scripting.FileSystemObject" ^);
   echo     var f = fso.OpenTextFile^(filename, FSO_ForReading^);
   echo     var c = f.ReadAll^(^);
   echo     f.Close^(^);
   echo     return^(c^);
   echo ^}
   echo.
   echo var i = GetFileContent^("input.del"^);
   echo var o = Recode^(i, "cp866", "windows-1251"^);
   echo SetFileContent^("output.del", o^);
   echo.
   echo function SetFileContent^( filename, conents ^)
   echo ^{
   echo     var fso = WScript.CreateObject^("Scripting.FileSystemObject"^);
   echo     var f = fso.OpenTextFile^(filename, FSO_ForWriting, true^);
   echo     f.Write^(conents^);
   echo     f.Close^(^);
   echo     return ^(true^);
   echo ^}
   echo.
   echo function Recode^( sourceText, srcEncoding, destEncoding ^)
   echo ^{
   echo     var adReadAll = -1;
   echo     var adTypeText = 2;
   echo.
   echo     var result = "";
   echo     var strm = WScript.CreateObject^("ADODB.Stream"^);
   echo.
   echo     strm.Open^(^);
   echo     strm.Type = adTypeText;
   echo     strm.Charset = destEncoding;
   echo     strm.WriteText^(sourceText^);
   echo     strm.Flush^(^);
   echo     strm.Position = 0;
   echo     strm.Charset = srcEncoding;
   echo     result = strm.ReadText^(adReadAll^);
   echo     strm.Close^(^);
   echo     return ^(result^);
   echo ^}
   )>>decode.js
)
start /b /wait decode.js
del /q input.del 2>nul

Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 21:00 09-08-2008 | Исправлено: Tipulatoid, 21:05 09-08-2008
sanb



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

Всего записей: 2189 | Зарегистр. 26-07-2006 | Отправлено: 21:16 09-08-2008
Tipulatoid



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sanb
1. Пробелы в конце строк удалил?
2. Закомментируй (поставь rem в начале) строки del /q setup.inf setup.rpt list.del process.txt aimp_components.txt sysinfo.txt 2>nul и del /q decode.js 2>nul
Посмотри, эти файлы создаются? Все или нет? Если не все, то какие имеются?

Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 21:21 09-08-2008 | Исправлено: Tipulatoid, 21:22 09-08-2008
sanb



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

Цитата:
1. Пробелы в конце строк удалил?

да, их небыло

Цитата:
Закомментируй (поставь rem в начале)

поставил
 
создаётся файл list.del с таким содержанием

Код:
sysinfo.txt
process.txt
aimp_components.txt
Data\AIMP.INI
Data\AllUsers
 

Всего записей: 2189 | Зарегистр. 26-07-2006 | Отправлено: 09:39 10-08-2008
Tipulatoid



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

Цитата:
создаётся файл list.del с таким содержанием

Это всё? Очень странно. Еще как минимум должны быть input.del decode.js  
1. Какая ОС?
2. Проверь работу скрипта-конвертера кодировок, т.е.:
а) выполни команду systeminfo>input.del
б) в этой же папке создай файл с именем 866to1251.js и содержанием:

Код:
var FSO_ForReading = 1;
var FSO_ForWriting = 2;
function GetFileContent( filename )
{
    var fso = WScript.CreateObject( "Scripting.FileSystemObject" );
    var f = fso.OpenTextFile(filename, FSO_ForReading);
    var c = f.ReadAll();
    f.Close();
    return(c);
}
 
var i = GetFileContent("input.del");
var o = Recode(i, "cp866", "windows-1251");
SetFileContent("output.del", o);
 
function SetFileContent( filename, conents )
{
    var fso = WScript.CreateObject("Scripting.FileSystemObject");
    var f = fso.OpenTextFile(filename, FSO_ForWriting, true);
    f.Write(conents);
    f.Close();
    return (true);
}
 
function Recode( sourceText, srcEncoding, destEncoding )
{
    var adReadAll = -1;
    var adTypeText = 2;
 
    var result = "";
    var strm = WScript.CreateObject("ADODB.Stream");
 
    strm.Open();
    strm.Type = adTypeText;
    strm.Charset = destEncoding;
    strm.WriteText(sourceText);
    strm.Flush();
    strm.Position = 0;
    strm.Charset = srcEncoding;
    result = strm.ReadText(adReadAll);
    strm.Close();
    return (result);
}
 

в) запусти 866to1251.js Должен появиться файл output.del где текст переведен в 1251
Отпиши здесь о результатах. Получилось или нет. Если нет, то где именно затык.

Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 11:56 10-08-2008
sanb



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

Цитата:
Еще как минимум должны быть input.del

он создаётся , но по завершению удаляется
1. WinXP SP2
2. получилось

Всего записей: 2189 | Зарегистр. 26-07-2006 | Отправлено: 14:23 10-08-2008
Tipulatoid



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sanb
Так попробуй (это уже батник):

Код:
@echo off
 
systeminfo>input.del
call :decode
ren output.del sysinfo.txt
 
tasklist /v>input.del
call :decode
ren output.del process.txt
 
dir /s /d>input.del
call :decode
ren output.del aimp_components.txt
 
 
 
goto :eof
 
 
:decode
if not exist decode.js (
   (
   echo var FSO_ForReading = 1;
   echo var FSO_ForWriting = 2;
   echo function GetFileContent^( filename ^)
   echo ^{
   echo     var fso = WScript.CreateObject^( "Scripting.FileSystemObject" ^);
   echo     var f = fso.OpenTextFile^(filename, FSO_ForReading^);
   echo     var c = f.ReadAll^(^);
   echo     f.Close^(^);
   echo     return^(c^);
   echo ^}
   echo.
   echo var i = GetFileContent^("input.del"^);
   echo var o = Recode^(i, "cp866", "windows-1251"^);
   echo SetFileContent^("output.del", o^);
   echo.
   echo function SetFileContent^( filename, conents ^)
   echo ^{
   echo     var fso = WScript.CreateObject^("Scripting.FileSystemObject"^);
   echo     var f = fso.OpenTextFile^(filename, FSO_ForWriting, true^);
   echo     f.Write^(conents^);
   echo     f.Close^(^);
   echo     return ^(true^);
   echo ^}
   echo.
   echo function Recode^( sourceText, srcEncoding, destEncoding ^)
   echo ^{
   echo     var adReadAll = -1;
   echo     var adTypeText = 2;
   echo.
   echo     var result = "";
   echo     var strm = WScript.CreateObject^("ADODB.Stream"^);
   echo.
   echo     strm.Open^(^);
   echo     strm.Type = adTypeText;
   echo     strm.Charset = destEncoding;
   echo     strm.WriteText^(sourceText^);
   echo     strm.Flush^(^);
   echo     strm.Position = 0;
   echo     strm.Charset = srcEncoding;
   echo     result = strm.ReadText^(adReadAll^);
   echo     strm.Close^(^);
   echo     return ^(result^);
   echo ^}
   )>>decode.js
)
start /b /wait decode.js
del /q input.del 2>nul

Должно появиться 4 файла: decode.js aimp_components.txt sysinfo.txt process.txt 3 последних - в кодировке 1251

Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 15:08 10-08-2008 | Исправлено: Tipulatoid, 15:09 10-08-2008
sanb



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

Цитата:
Должно появиться 4 файла

всё так получилось

Всего записей: 2189 | Зарегистр. 26-07-2006 | Отправлено: 15:27 10-08-2008
   

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

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd) 2
Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru