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

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

Автор: XXXXL
Дата сообщения: 02.05.2009 19:52
Здравствуйте!
Я тут когда-то давно встречал код, который переводил текст с кириллицы в транслит, написанный Elroir`ом, он даже в шапке был, теперь понадобился а найти не могу...

Может у кого он есть?

Второе: Как можно заменить все пробелы в текстовом документе на символ "=" ?

Треье: Реально заставить gsar изменять кириллические словами?


Код: @echo off
setlocal
set "toChange=12345"
set /p changeTo=<1.txt
gsar -s%toChange% -r%changeTo% -o test.txt

В файле 1.txt слово написано кириллическим шрифтом.
Автор: basstard
Дата сообщения: 02.05.2009 20:51
LikvidatorMax

каждый файл в отдельный архив

я себе такое для rar'ов делал.
по ссылке найдешь скрипт archive.cmd и консольную версию rar.exe
скрипт и архиватор должны лежать в одной папке.
выдели любое количество файлов и/или папок и перетащи их на иконку archive.cmd
скрипт создаст на рабочем столе папку с именем archive_<текущая дата>_<случайное число>
и в нее заархивирует все указанные файлы/папки. каждое вхождение в отдельный архив.
для каждого нового задания будет создаваться новая папка с датой,
чтобы легче ориентироваться и случайным числом, чтобы гарантированно избежать повторений.
Автор: 01MDM
Дата сообщения: 02.05.2009 22:10
XXXXL

Цитата:
Второе: Как можно заменить все пробелы в текстовом документе на символ "=" ?

Знаю, sed у тебя есть:

Код:
sed "s/ /=/g" 1.txt | more 1>1.tmp && move 1.tmp 1.txt

:: Если твой sed нормально возвращает перенос строки (в win формате) то:

sed -i "s/ /=/g" 1.txt
Автор: Astra55
Дата сообщения: 03.05.2009 08:34
Подскажите пожалуйста такую штуку - есть софты, которые запускаются не на полный экран, если создать ярлык и прописать там эту опцию, то при запуске окно развернется полностью. Если ли возможность из командной строки запустить приложение, чтобы всегда был разворот на весь экран? Читал справочник по комстроке, но не нашел такого.
Автор: timka85
Дата сообщения: 03.05.2009 09:26
Astra55
Привет! По-моему о команде Start в Справочнике по параметрам командной строки все описано на эту тему и /max там есть.
Автор: XXXXL
Дата сообщения: 03.05.2009 09:52
01MDM, спасибо огромное, всё работает.
Осталось только:

Цитата:
Я тут когда-то давно встречал код, который переводил текст с кириллицы в транслит, написанный Elroir`ом, он даже в шапке был, теперь понадобился а найти не могу...
Может у кого он есть?


Автор: timka85
Дата сообщения: 03.05.2009 10:15
XXXXL
http://forum.ru-board.com/topic.cgi?forum=62&topic=9040&start=733&limit=1

Добавлено:
а вот та шапка, носи на здоровье
http://forum.ru-board.com/topic.cgi?forum=62&topic=13556&start=0&limit=1&m=4
Автор: XXXXL
Дата сообщения: 03.05.2009 11:24

Цитата:
а вот та шапка, носи на здоровье

Спасибо!


Цитата:
У меня нормально обрабатывает. Если исходный файл в win-1251, то добавь в батник `chcp 1251 1>nul`

01MDM, у меня оказался исходный файл в UTF-8, вгет переводит кучу символо, это как-то лечится?
Автор: 01MDM
Дата сообщения: 03.05.2009 11:40
XXXXL
батник для транслита

Код:
@echo off
chcp 1251 1>nul

sed -e "s/а/a/g" -e "s/А/A/g" ^
-e "s/б/b/g" -e "s/Б/B/g" ^
-e "s/в/v/g" -e "s/В/V/g" ^
-e "s/г/g/g" -e "s/Г/G/g" ^
-e "s/д/d/g" -e "s/Д/D/g" ^
-e "s/е/e/g" -e "s/Е/E/g" ^
-e "s/ё/jo/g" -e "s/Ё/JO/g" ^
-e "s/ж/zh/g" -e "s/Ж/ZH/g" ^
-e "s/з/z/g" -e "s/З/Z/g" ^
-e "s/и/i/g" -e "s/И/I/g" ^
-e "s/й/jj/g" -e "s/Й/JJ/g" ^
-e "s/к/k/g" -e "s/К/K/g" ^
-e "s/л/l/g" -e "s/Л/L/g" ^
-e "s/м/m/g" -e "s/М/M/g" ^
-e "s/н/n/g" -e "s/Н/N/g" ^
-e "s/о/o/g" -e "s/О/O/g" ^
-e "s/п/p/g" -e "s/П/P/g" ^
-e "s/р/r/g" -e "s/Р/R/g" ^
-e "s/с/s/g" -e "s/С/S/g" ^
-e "s/т/t/g" -e "s/Т/T/g" ^
-e "s/у/u/g" -e "s/У/U/g" ^
-e "s/ф/f/g" -e "s/Ф/F/g" ^
-e "s/х/kh/g" -e "s/Х/KH/g" ^
-e "s/ц/c/g" -e "s/Ц/C/g" ^
-e "s/ч/shh/g" -e "s/Ч/SHH/g" ^
-e "s/ш/sh/g" -e "s/Ш/SH/g" ^
-e "s/щ/sca/g" -e "s/Щ/SCA/g" ^
-e "s/ь/'/g" -e "s/Ь/'/g" ^
-e "s/ъ/"""/g" -e "s/Ъ/"""/g" ^
-e "s/э/eh/g" -e "s/Э/EH/g" ^
-e "s/ы/y/g" -e "s/Ы/Y/g" ^
-e "s/ю/ju/g" -e "s/Ю/JU/g" ^
-e "s/я/ja/g" -e "s/Я/JA/g" %1 | more 1>"%~n1-trans%~x1"
Автор: XXXXL
Дата сообщения: 03.05.2009 12:48

Цитата:
батник для транслита

Он то мне и нужен был, спасибо!



Цитата:
Попробуй cmd запустить с ключом /u (юникод)


Запустил cmd /u, в консоли написал:
setlocal
set "toChange=12345"
set /p changeTo=<1.txt
gsar -s%toChange% -r%changeTo% -o test.txt

Результат - куча символов в test.txt
Автор: 01MDM
Дата сообщения: 03.05.2009 13:44
XXXXL,
Если не критично, что бы файл оставался в кодировке UTF-8, то можно сначала его перекодировать в CP1251. Для этого потребуется перекодировщик. Я пользуюсь iconv.exe - взять можно здесь: http://gnuwin32.sourceforge.net/packages/libiconv.htm


Код:
iconv -c -f utf-8 -t cp1251 1.txt 1>2.txt
Автор: XXXXL
Дата сообщения: 03.05.2009 14:07
01MDM, при перекодировке содержимое проподает, кодироку самого файла меняет а содержимое удалят.
Как быть?
Автор: 01MDM
Дата сообщения: 03.05.2009 14:34
XXXXL
У меня таких проблем нет. Все нормально отрабатывает.
Ты наверное перекодируешь напрямую. Делай через временный файл:

Код:
iconv -c -f utf-8 -t cp1251 1.txt 1>1.tmp && move 1.tmp 1.txt
Автор: Cosmogor
Дата сообщения: 03.05.2009 22:05
Доброго времени суток.

Подскажите почему у меня ping неработает.
Всё время показывает echo do_if_there_is_a_connection
Когда есть инет соединение(ну это понятно)
И когда интернет выключен, всё равно
echo do_if_there_is_a_connection
Код взят с здешнего форума

Вот код:

:again
ping -n 1 192.168.0.100 | find "TTL="
if %errorlevel%==0 ( echo do_if_there_is_a_connection
) else ( echo do_if_there_is_no_connection )
sleep 30
goto again


В чём причина?

Спс.

Извиняюсь, оплошал малость
Всему виной пробелы!

Добавлено:
Есть ещё один маленькии вопросик.
А реально ли с помощью батника проверить
почту от определённого отправителя?
Например от Otpraviteli@mail.ru

И если письмо пришло на почту, то
сделать определённое действие, а если нет,
то EXIT
Подтолкните на мысль.

Спс.
Автор: timka85
Дата сообщения: 03.05.2009 23:07
Еще раз всем Привет!
Не подскажет ли кто как прописать команду на перемещение файла Text.txt в папку с именем %Desktop% ?

Добавлено:
Важно заметить, что полный путь мне не нужен, батник должен лежать рядом с этой папкой.
Автор: basstard
Дата сообщения: 03.05.2009 23:49
timka85
move <file> %%desktop%%
Автор: timka85
Дата сообщения: 04.05.2009 00:36
basstard
спасибо! выручил
Автор: timka85
Дата сообщения: 04.05.2009 08:30
Нужен батник , который будет запускать через ярлык какой-нибудь *.exe файл, переименовывая его в Renamed.exe . Возможна ли такая операция?
Автор: Maza_Faka
Дата сообщения: 04.05.2009 09:27
timka85
Непонятна поставленная задача. Какой ярлык? Какой файл? Зачем запускать ярлык, когда можно запустить файл?
Автор: timka85
Дата сообщения: 04.05.2009 10:01
Maza_Faka
У меня есть некоторая нестыковка в выполнении одной цепочки действий. Есть два способа решить эту проблему. Но сначала о ней. Из того, что описано вниз по страницам, видно, что Commander.exe у меня не закрывается после того как я запустил Приложение по ярлыку через (Искомый) батник от 01MDM, и затем тот же батник скрыл мне окно Commander.exe . Так нужно, так как другой, Общий батник должен ожидать завершения процесса Commander.exe, который завершается после закрытия Приложения. Почему должен ожидать? Потому что потом он должен переименовать файл Commander.exe в другое имя. Но это у него (Общего батника) не получится пока Приложение запущено. Так вот теперь не знаю как завершать процесс Commander.exe, когда имя Приложения всегда другое и его не пропишешь в комаде, идущей после скрытия Commander.exe. Поэтому один вариант решения - это, при запуске через ярлык вставить команду на временное переименование запускаемого .ехе файла или на регистрацию где-нибудь его настоящего имени, чтобы потом без проблем продолжить цепочку и завершить процесс Commander.exe.
Другой вариант - это вообще заменить команду скрытия окна Cpmmander.exe на команду по его убийству, но только в том случае, если команда по его переименовке в Общем батнике каким-то образом будет ожидать завершения процесса, блокирующего его сделать это.
Не стесняйтесь распрашивать меня, если что-то не понятно в моих словах. Я давно уже не живу в России, т.ч. кто знает...
Автор: basstard
Дата сообщения: 04.05.2009 10:44
timka85
Почему должен ожидать? Потому что потом он должен переименвать файл Commander.exe в другое имя

если после запуска процесс не обращается к ресурсу из которого был запущен,
то ему не важно во что ресурс переименован, он даже не узнает об этом.
если все-таки обращается, то это тоже можно обойти: не переименовывать,
а копировать, оригинал же удалить после завершения процесса:

Код: start abcde.exe
copy abcde.exe abcde-2.exe
taskkill /f /im abcde.exe
del abcde.exe
Автор: timka85
Дата сообщения: 04.05.2009 11:04
basstard
Спасибо, но не то Переименованный файл мне нужен на момент запуска по ярлыку, ведущему к нему, а точнее - его оригинальному имени.
Еще раз. Главная цель батника - выбрать ярлык по нужному алфавитному порядку и, переименовав его источник в Renamed.exe, запустить. В этом вся "собака зарыта", нужен запущенный процесс с известным именем! Но может у кого и на второй способ найдется решение?

З.Ы. Я бы рассказал и даже показал бы ролик частичного выполнения моей идеи. Но боюсь не всем будет ясна практика такого внедрения серии запусков в особый вид софта...
Автор: basstard
Дата сообщения: 04.05.2009 11:36
timka85
Переименованный файл мне нужен на момент запуска по ярлыку

тогда переименуй на момент запуска:

Код: copy abcde.exe abcde-2.exe
start abcde-2.exe
taskkill /f /im abcde-2.exe
del abcde-2.exe
Автор: Maza_Faka
Дата сообщения: 04.05.2009 12:00
timka85

Цитата:

Так вот теперь не знаю как завершать процесс Commander.exe, когда имя Приложения всегда другое

Процесс имеет окно?
Автор: LikvidatorMax
Дата сообщения: 04.05.2009 23:01
как из строчки с полным путем и именем файла извлечь имя файла и путь (в разные переменные)?
Автор: 01MDM
Дата сообщения: 04.05.2009 23:08
LikvidatorMax

Код:
@echo off
for %%i in ("C:\Windows\system32\shell32.dll") do (
set "_file=%%~nxi"
set "_path=%%~dpi"
)
echo %_file%
echo %_path%
Автор: XXXXL
Дата сообщения: 05.05.2009 06:16

Цитата:
Ты наверное перекодируешь напрямую. Делай через временный файл:
iconv -c -f utf-8 -t cp1251 1.txt 1>1.tmp && move 1.tmp 1.txt


Вот это уже работает на ура.

01MDM, Спасибо!!!
Автор: timka85
Дата сообщения: 05.05.2009 10:16
Maza_Faka
Сам процесс Commander..exe на момент закрытия приложения не имеет окна, т.к. он скрыт и виден только в Дисп. задач. А вот приложение - да, имеет.

Добавлено:
Вот, сделал видео, показывающее от А до Я где и для чего мне нужно применять искомый мной БАТник:
_ХТТП://ДЕПositfiles.com/files/wej5s4pfl
(меняем Кириллицу на латиницу и качаем)
Автор: Alisad
Дата сообщения: 05.05.2009 12:00
Народ кто может сталкивался с такой задачей, подскажите
Надо с фтп скачать файлы по маске и после этого удалить их с фтп, пытался сделать через wget, получается только скачать, но не удалить. На фтп разрешено удалять файлы
Автор: griha2009
Дата сообщения: 05.05.2009 12:59
Задача такая: надо из папки C:\New рассортировать новые версии файлов(разных расширений) по своим подкаталогам в папке C:\Old. Т.е. если в подкаталоге папки C:\Old есть файл совпадающий по имени с файлом из папки C:\New, то файл из папки C:\New копировать(перемещать) в этот подкаталог. Вот вариант в bat-файле
Код:

Код: FOR /R "C:\new\" %%i IN (*.*) DO (
FOR /R "C:\old\" %%b IN (*.*) DO if "%%~nxb"=="%%~nxi" xcopy "%%~fi" "%%~fb" /Y /D
)

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: SAS.Планета (часть 2)


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