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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sanb
А чтобы makecab-ом паковать и папки нужно почитать документацию к нему. Это делается через создание ddf-файла. http://download.microsoft.com/download/platformsdk/cab/2.0/w98nt42kmexp/en-us/cabsdk.exe

Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 15:37 10-08-2008
Auren

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожалуйста.
 
Нужно запустить oggdec.exe на все ogg.-файлы, находящиеся в папке sound. Файлов несколько тысяч. Писать к каждому свою команду - замориться можно.

Всего записей: 614 | Зарегистр. 17-10-2006 | Отправлено: 15:42 10-08-2008
sanb



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ладно, к чёрту 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  

если тупо дописать то не получается, не все файлы находятся для упаковки (в архив попадает только sysinfo.txt)
и не удаляется aimp_components.txt

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



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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
 

вставь эти 2 строки между ren output.del aimp_components.txt и goto :eof в последнем коде, что я давал.

Цитата:
и не удаляется aimp_components.txt

Мож, у тебя этот файл открыт?
 
Добавлено:
Auren

Цитата:
Нужно запустить oggdec.exe на все ogg.-файлы, находящиеся в папке sound. Файлов несколько тысяч. Писать к каждому свою команду - замориться можно.

В смысле oggdec.exe *.ogg не прокатывает? Тогда  

Код:
@echo off
for %%a in (*.ogg) do oggdec.exe %%a

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

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

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

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

Всего записей: 614 | Зарегистр. 17-10-2006 | Отправлено: 16:57 10-08-2008
Tipulatoid



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

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

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

Код:
@echo off
for /r %%a in (*.ogg) do oggdec.exe "%%a"

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



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

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



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sanb
Какая ОС? Хотя, судя по интерфейсу, Vista. Мне этот конвертер 866 -> 1251 давали в свое время добрые люди из этой ветки. Vista тогда еще не была распространена. Поэтому советую пойти в ту ветку, привести им код конвертера и попросить переписать чтоб и в XP работал, и в Vista. Как ответят, сообщи.  

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

Это средство стоит по умолчанию во всех последних Windows, так что на сей счет можно не беспокоится.

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

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

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

http://kb.mozillazine.org/JavaScript_is_not_Java
 

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

Теперь работает. Спасибо!

Всего записей: 614 | Зарегистр. 17-10-2006 | Отправлено: 21:21 10-08-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:37 10-08-2008
Tipulatoid



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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


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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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
странно, у меня все варианты работают
я в растерянности...

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



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sanb
Попробуй добавить в дистрибутив помимо 7z.exe ещё и systeminfo.exe и tasklist.exe (найдешь в папке %windir%\system32) У парня донельзя порезаная Винда.

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



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

Цитата:
что то не у всех работает

 
Например в XP Home systeminfo.exe нет изначально, впрочем как и tasklist, taskkill, wmic.. Список можно и дальше продолжить.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 09:03 11-08-2008
sanb



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

Цитата:
Например в XP Home systeminfo.exe нет изначально, впрочем как и tasklist

а можно ли их установить официально, есть ли установщик/апдейт?

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



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

Цитата:
а можно ли их установить официально, есть ли установщик/апдейт?

 
Наверное такого апдейта нет. Можно это хозяйство просто забрать из XP Pro. Я так и сделал для systeminfo, wmic и кажется diskpart (если не ошибаюсь). Но некоторую информацию о системе можно получить и через netsh

Код:
 
netsh diag show /?
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:56 11-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.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru