Ru-Board.club
← Вернуться в раздел «Программы»

» Командная строка, батники, сценарии (bat, cmd) 2

Автор: DenFed
Дата сообщения: 06.08.2008 21:12
Elroir
Как я уже и писал все переменные среды в порядке.
Может это NOD или наоборот вирус какойнибудь?
Автор: SerDIDG
Дата сообщения: 06.08.2008 21:17
Огромное спасибо, скрипт работает. Но что делать если файл 111.cfg находится в папке (например data\111.cfg). И в самом файле есть закомментированные строки, которые удаляются после скрипта.

Вот сам файл.
http://files.filefront.com/111cfg/;11386917;/fileinfo.html
Автор: Tipulatoid
Дата сообщения: 07.08.2008 09:36
SerDIDG
У тебя сложный по структуре файл. Тут нужно sed использовать. Сам я утилите этой не разбираюсь. Авось кто подскажет из разбирающихся.
Автор: SerDIDG
Дата сообщения: 07.08.2008 15:03
Спасибо, буду копаться.
Автор: Smitis
Дата сообщения: 07.08.2008 22:48

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

Ещё пара программ:
- Dr.Batcher http://rl-team.net/warez/1146210187-dr.batcher-1.2.html
- Easy Batch Builder (в розыске)
Автор: sanb
Дата сообщения: 09.08.2008 13:12
как мне через батник получить инфу о операционной системе и вывести её в текстовик?
Заранее благодарен!

и ещё, можно ли воспользоваться системным просмотрщиком архивов для упаковки в zip и какие команды он поддерживает? а вообще подойдёт либой архиватор, главное системный, чтобы можно было обойтись без сторонних компонентов используя только один батник, может cab
Автор: Tipulatoid
Дата сообщения: 09.08.2008 13:46
sanb
ver>os.txt
Автор: sanb
Дата сообщения: 09.08.2008 13:58
Tipulatoid
а как узнать больше информации о ОС, нужнно ещё какая версия SP (1,2 или 3) и какая локализация (Rus, Eng ...)
Автор: Tipulatoid
Дата сообщения: 09.08.2008 14:17
sanb
Тогда systeminfo>os.txt Можно предварительно отфильтровать только необходимую инфу, если надо
На второй вопрос - makecab /?
Автор: sanb
Дата сообщения: 09.08.2008 18:32
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
Автор: Tipulatoid
Дата сообщения: 09.08.2008 20:00
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
Автор: sanb
Дата сообщения: 09.08.2008 20:16
Tipulatoid
ого
что то не работает, ничего не создаётся
Автор: Tipulatoid
Дата сообщения: 09.08.2008 20:21
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
Посмотри, эти файлы создаются? Все или нет? Если не все, то какие имеются?
Автор: sanb
Дата сообщения: 10.08.2008 08:39
Tipulatoid

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

да, их небыло

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

поставил

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

Код: sysinfo.txt
process.txt
aimp_components.txt
Data\AIMP.INI
Data\AllUsers
Автор: Tipulatoid
Дата сообщения: 10.08.2008 10:56
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);
}
Автор: sanb
Дата сообщения: 10.08.2008 13:23
Tipulatoid

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

он создаётся , но по завершению удаляется
1. WinXP SP2
2. получилось
Автор: Tipulatoid
Дата сообщения: 10.08.2008 14:08
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
Автор: sanb
Дата сообщения: 10.08.2008 14:27
Tipulatoid

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

всё так получилось
Автор: igor_andreev
Дата сообщения: 10.08.2008 14:37
sanb
А чтобы makecab-ом паковать и папки нужно почитать документацию к нему. Это делается через создание ddf-файла. http://download.microsoft.com/download/platformsdk/cab/2.0/w98nt42kmexp/en-us/cabsdk.exe
Автор: Auren
Дата сообщения: 10.08.2008 14:42
Подскажите, пожалуйста.

Нужно запустить oggdec.exe на все ogg.-файлы, находящиеся в папке sound. Файлов несколько тысяч. Писать к каждому свою команду - замориться можно.
Автор: sanb
Дата сообщения: 10.08.2008 15:07
ладно, к чёрту cab
как мне теперь дописать это

Код: 7z a -t7z report.7z Data\ process.txt aimp_components.txt sysinfo.txt
del /q process.txt aimp_components.txt sysinfo.txt decode.js
Автор: Tipulatoid
Дата сообщения: 10.08.2008 15:41
sanb
Не знаю, у меня всё пакует и удаляет:

Код: 7z.exe a report aimp_components.txt process.txt sysinfo.txt Data\
del /q aimp_components.txt process.txt sysinfo.txt decode.js 2>nul
Автор: Auren
Дата сообщения: 10.08.2008 15:57
Tipulatoid

Цитата:
все ogg.-файлы, находящиеся в папке sound

А в папке sound есть еще много подпапок, которые тоже надо обработать. Скрипт, который вы мне дали, не работает.
Автор: Tipulatoid
Дата сообщения: 10.08.2008 16:07
Auren

Цитата:
А в папке sound есть еще много подпапок, которые тоже надо обработать. Скрипт, который вы мне дали, не работает.

Совсем не работает или не работает только для файлов в подпапках?
Если первое, то:
1. проверь, что утилита находится либо в текущей папке, либо в папках, прописанных в переменой %path%
2. приведи синтаксис утилиты. Т.е. в консоли набери oggdec.exe /? и что напишет сюда
Если второе, то попробуй

Код: @echo off
for /r %%a in (*.ogg) do oggdec.exe "%%a"
Автор: sanb
Дата сообщения: 10.08.2008 19:39
Tipulatoid
вот что на другом компе вылезло


а если на другом компе не установлена Java то скрипт не будет работать?
Автор: Tipulatoid
Дата сообщения: 10.08.2008 20:11
sanb
Какая ОС? Хотя, судя по интерфейсу, Vista. Мне этот конвертер 866 -> 1251 давали в свое время добрые люди из этой ветки. Vista тогда еще не была распространена. Поэтому советую пойти в ту ветку, привести им код конвертера и попросить переписать чтоб и в XP работал, и в Vista. Как ответят, сообщи.

Цитата:
а если на другом компе не установлена Java то скрипт не будет работать?

Это средство стоит по умолчанию во всех последних Windows, так что на сей счет можно не беспокоится.
Автор: Auren
Дата сообщения: 10.08.2008 20:21

Цитата:
а если на другом компе не установлена Java то скрипт не будет работать?

http://kb.mozillazine.org/JavaScript_is_not_Java


Цитата:
Если второе, то попробуй

Теперь работает. Спасибо!
Автор: 01MDM
Дата сообщения: 10.08.2008 20:37
Tipulatoid

Отконвертировать вывод в 1251 можно так:

Код:
@echo off
for /f "tokens=*" %%i in ('systeminfo') do call:convert "%%i"
goto:eof

:convert
chcp 1251 1>nul
echo %~1 1>>systeminfo.txt
chcp 866 1>nul
Автор: Tipulatoid
Дата сообщения: 10.08.2008 21:09
sanb
С подачи 01MDM твоя задача свелась к следующему батнику:

Код: @echo off
call :make_reports "systeminfo" sysinfo.txt
call :make_reports "tasklist /v" process.txt
call :make_reports "dir /s /d" aimp_components.txt

7z.exe a report aimp_components.txt process.txt sysinfo.txt Data\
del /q aimp_components.txt process.txt sysinfo.txt 2>nul

goto :eof

:make_reports
for /f "tokens=*" %%a in ('%~1') do call:convert "%%a" %~2
goto:eof

:convert
chcp 1251 1>nul
echo %~1 1>>%~2
chcp 866 1>nul
Автор: sanb
Дата сообщения: 10.08.2008 21:53
Tipulatoid
эта ошибка была скорей всего из-за порезанной винды (игровая версия) всякими nLite'ми
скорей всего небыло Microsoft Windows Based Script Host или повреждён...

2All
последнюю версию Microsoft Windows Based Script Host 5.7 для XP можно скачать >здесь<

Tipulatoid

Цитата:
С подачи 01MDM твоя задача свелась к следующему батнику:

последний вариант работает

Спасибо ребята!

PS вот что получилось http://www.aimp.ru/forum/index.php?topic=7436

Добавлено:
Tipulatoid
что то не у всех работает http://www.aimp.ru/forum/index.php?topic=7436
странно, у меня все варианты работают
я в растерянности...

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: DVD-video (ДВД-видео) - что и как (часть 3)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.