Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 2

Автор: Elroir
Дата сообщения: 25.02.2007 05:49
K6
Символ ~ без дополнений убирает кавычки (если они были) вокруг переданного аргумента. То есть если ты передаешь батнику "archive.rar" в качестве первого аргумента, то в переменной %1 будет именно "archive.rar", а если написать %~1, то там будет archive.rar (без кавычек). Также ~ используется для добавления модификатора к параметру: %~n1 вернет имя файла переданного батнику первым аргументом, а %~x1 его расширение.
Автор: Tipulatoid
Дата сообщения: 25.02.2007 07:05
Не подскажете как найти пустую строку в текстовом файле с помощью find?
Автор: igor_andreev
Дата сообщения: 25.02.2007 08:16
Tipulatoid
А зачем? Что с ней дальше делать?
Типа findstr /r /v /n "." test.txt
/r - значит, как регулярное выражение
"." - в регулярном выражении любой символ
/v - выводить только строчки, которые не содержат "."
/n - писать номера строчек
Автор: Tipulatoid
Дата сообщения: 25.02.2007 08:21
igor_andreev
Спасибо

Цитата:
А зачем? Что с ней дальше делать?

Пишу батник, который бы выдергивал из *.eml файлов (создают многие почтовые программы, по сути - обычные текстовые файлы) текст письма, выкидывая headers. Headers от собственно текста отделяются пустой строкой. Нужно узнать ее номер, ну а потом for /f "skip=%номер пустой строки%" и т.д.
Автор: K6
Дата сообщения: 25.02.2007 11:26
Elroir А что будет если не верно задан параметр?
Автор: Elroir
Дата сообщения: 25.02.2007 15:11
K6
Если указаного файла не существует, arj или rar выдадут ошибку. Если расширение указанного файла не .arj или .rar - просто ничего не произойдет. Если указана директория для распаковки, которой не существует - она будет создана.
Что-бы проверить существует ли файл, надо добавить строчку:

Код:
if "%~2"=="" goto help
if not exist "%~1" goto end
if /i "%~x1"==".arj" arj x %1 "-ht%~2" -y
Автор: krukoff
Дата сообщения: 25.02.2007 15:53
Elroir

Цитата:
@echo off
del /s /q *.tmp

Спасибо. Только как сделать, чтобы удалялись все файлы по маске, независимо от атрибутов? И удалялись на дисках, которые я укажу в командном файле. (хочу производить авт. удаление временных файлов.)
Автор: Elroir
Дата сообщения: 25.02.2007 16:22
krukoff

Код:
@echo off
:again
if "%2"=="" goto :EOF
attrib -h -s -r %2\%1 /s
del /q /s %2%1
shift /2
goto again
Автор: AnteC
Дата сообщения: 26.02.2007 08:32
Если нужно набросал автоинсталлер M$ хотфиксов для WinXp - автоматом определит количество хотфиксов и их установит. Поддерживаются сетевые пути. Главное чтобы названия хотфиксов небыли изменены (в имени хотфиксов присутствовала строка - windowsxp-kb)

Код: @echo off
cls
rem =Укажите путь до папки с HotFix'ами в переменной TempPath
rem если TempPath=LOCAL - используется текущая папка, но если папка СЕТЕВАЯ НУЖНО указать полный путь!!
set TempPath=LOCAL
rem ===========================================================================

setlocal enabledelayedexpansion
Title AutoInstaller for M$ HotFixes by AnteC.
set AllHs=0
set PrHs=0
set Rez=1
set Rest=1
if %TempPath%==LOCAL set TempPath=%cd%
For /F %%i in ('"dir %TempPath% /B /L | find "windowsxp-kb""') do set /a AllHs=AllHs+1
if %AllHs%==0 echo ‚ Ї ЇЄҐ "%TempPath%" -Ґв hotfix'®ў & pause & exit

:Wrong1
cls
echo         ‚Ќ€ЊЂЌ€…! ‡ЂЉђЋ‰’… ‚‘… Ћ’Љђ›’›… Џђ€‹Ћ†…Ќ€џ
echo ---------------------------------------------------------------------------
echo ‚ўҐ¤ЁвҐ ०Ё¬: 1 [default] - бЄалвл©    0 - Ї®«-л©
set /P Rez=:
if %Rez% neq 1 if %Rez% neq 0 echo ЌҐўҐа-л© ўў®¤ (ўў®¤ЁвҐ «ЁЎ® 1 Ё«Ё 0) & pause & goto Wrong1
:Wrong2
cls
echo         ‚Ќ€ЊЂЌ€…! ‡ЂЉђЋ‰’… ‚‘… Ћ’Љђ›’›… Џђ€‹Ћ†…Ќ€џ
echo ---------------------------------------------------------------------------
echo Џ® ®Є®-з -ЁЁ: 1[default] - ЇҐаҐ§ Јаг§Є  ЏЉ    0 - ЎҐ§ ЇҐаҐ§ Јаг§ЄЁ ЏЉ
set /P Rest=:
if %Rest% neq 1 if %Rest% neq 0 echo ЌҐўҐа-л© ўў®¤ (ўў®¤ЁвҐ «ЁЎ® 1 Ё«Ё 0) & pause & goto Wrong2

For /F %%i in ('"dir %TempPath% /B /L | find "windowsxp-kb""') do (
cls
set /a PrHs=PrHs+1
echo “бв - ў«Ёў Ґвбп [!PrHs! Ё§ %AllHs%] hotfix
if %Rez%==0 call %TempPath%\%%i /passive /norestart
if %Rez%==1 call %TempPath%\%%i /quiet /norestart
)

if %Rest%==1 shutdown.exe -r -f -t 00
Автор: JohnRD
Дата сообщения: 26.02.2007 11:30
добрый день

подскажите пожалуйста, как правильно запускать cmd в котором список cmd.
каждый последующий должен дожидаться завершения предудущего.
если так запускать, то в конце каждого нужно писать exit
1.cmd

Код:
start /wait a.cmd
start /wait b.cmd
c.cmd
Автор: KapralBel
Дата сообщения: 26.02.2007 12:12
JohnRD

Код:
@Echo Off
Call 1.cmd
Call 2.cmd
call 3.cmd
Автор: cluster
Дата сообщения: 26.02.2007 12:25
Вот вопросик, ребят.
Как получить имя залогиненного пользователя, зная имя машины, в локальной сети? И тоже самое наоборот.

Имя пользователя пока определяю с помощью удалённого помошника или терминалки. Но необходимо через консоль и не так медленно.
Автор: KapralBel
Дата сообщения: 26.02.2007 12:38
cluster
Тебе надо удаленно?
А как быть в таком случае с таерминал серверами, где подключен не один пользователь

или только текущего?
Автор: cluster
Дата сообщения: 26.02.2007 13:02
KapralBel

Цитата:
Тебе надо удаленно?

да-да, именно так.


Цитата:
А как быть в таком случае с таерминал серверами, где подключен не один пользователь

на это мне всё равно, нужно только для рабочих станций
Автор: KapralBel
Дата сообщения: 26.02.2007 13:16
cluster
http://www.optimumx.com/download/netusers.zip
Автор: cluster
Дата сообщения: 26.02.2007 13:42
KapralBel
вот, уже неплохо. пасипа. осталась половина дела.
Автор: 5ar5
Дата сообщения: 26.02.2007 14:55
Подскажите, как удалить символ новой строки в тескотом файле? Или как вставлять в текстовый файл результат выполнения команды без этого символа на конце?
Автор: KapralBel
Дата сообщения: 26.02.2007 15:22
5ar5
Набор GNU утилит для win32
Там есть утилита GSAR - она поможет тебе

Код:
GSAR -s:013 -r File.txt Temp.txt
GSAR -s:010 -r Temp.txt Result.txt
Автор: igor_andreev
Дата сообщения: 26.02.2007 15:24
5ar5
А какой команды? Можно самому себе сделать *.COM файл с функциональностью ECHO, но без вставки на конце символа перевода строки CR\LF


Код:
@ECHO OFF
> #.SCR ECHO N _CHO.COM
>>#.SCR ECHO E 0100 BB 80 00 43 80 3F 0D 75 FA C6 07 24 B4 09 BA 82
>>#.SCR ECHO E 0110 00 39 DA 7F 02 CD 21 B4 4C CD 21
>>#.SCR ECHO RCX
>>#.SCR ECHO 001B
>>#.SCR ECHO W
>>#.SCR ECHO Q
>>#.SCR ECHO.
DEBUG<#.SCR>NUL
DEL #.SCR

_CHO %DATE% >TEST.TXT
_CHO TEST FIRST WORD >>TEST.TXT
_CHO TEST SECOND WORD >>TEST.TXT
Автор: ViSiToR
Дата сообщения: 26.02.2007 21:50
igor_andreev

Цитата:
Можно самому себе сделать *.COM файл с функциональностью ECHO, но без вставки на конце символа перевода строки CR\LF

Это же отличное решение! зачем тогда сторонние утилиты нужны?

Это дело нужно отметить помещением в шапку!

Добавлено:

Цитата:
Это дело нужно отметить помещением в шапку

Отметил :

Вывод данных в файл без создания новой-пустой строки на конце файла (CRLF)

Поставил как первую строку в списке под Готовые решения и частые вопросы: - нормально?
Автор: igor_andreev
Дата сообщения: 26.02.2007 22:57

Цитата:
Вывод данных в файл без создания новой-пустой строки на конце файла (CRLF)

Ужасная формулировка Причем здесь конец файла? Конец файла - это символ с кодом кажется 26.
CR\LF - это Carriage Return\Linefeed (возврат каретки\перевод строки), символы с кодом 13 и 10. В Windows служит знаком перевода строки. В Линуксах и Mac обычно пользуются чем нить-одним, или 13 или 10. Такие файлы наверно многие видели, открываешь текстовой файл в блокноте, а там непонятные квадратики и весь текст сплошняком. Это потому-что виндовый блокнот не воспринимает 13 или 10 по-отдельности как перевод строки, ему подавай, чтоб они рядом стояли.

Цитата:
зачем тогда сторонние утилиты нужны?
А этот COM-файл что, не сторонняя?
Цитата:
Поставил как первую строку в списке под Готовые решения и частые вопросы:
Имхо, нафих он там не нужен, это не частый вопрос, первый раз за два года спросили на моей памяти. Обычно регулярно спрашивают, как создать файл с именем текущей даты или как запустить батник скрытно



Автор: Elroir
Дата сообщения: 26.02.2007 23:23
igor_andreev

Цитата:
А этот COM-файл что, не сторонняя

Она не сторонняя, а "батнико-встроенная" . Все равно лучше чем отдельна утилита, которую надо держать рядом.

ViSiToR
Согласен с igor_andreev - формулировка не очень. И уж точно не подходит на первое место .
Может "Запись текста в файл без перевода(перехода) строки"?
Автор: MUSICFROMWEB
Дата сообщения: 27.02.2007 00:25

Цитата:
InSe0F
Пробежался по теме - несколько раз поднимался вопрос о VPN.
Создай батник с следующей строчкой:

Код:
rasdial имя_ВПН_соединения username password

и кинь его в автозагрузку.


Тогда такой вопрос (возможно ламерский, так как не шарю):
Вот допустим ВПН с первой попытки не сконнектил (там ошибка 800 или что-то подобное), команда прекратит выполнение.
Какой нужен скрипт, чтобы зациклить команду установки впн соединения, но с проверкой, не установлено ли уже это соединение на предыдущей попытке и прекратить выполнение скрипта?

Заранее (и потом тоже скажу ) спасибо!
Автор: igor_andreev
Дата сообщения: 27.02.2007 00:36
MUSICFROMWEB
По всякому можно. Можно IP проверять или пинговать например какой-нибудь сервер

Код:
:TRY_DIAL
CLS
RASDIAL connection diallogin dialpass
PING -n 1 host
IF ERRORLEVEL 1 GOTO :TRY_DIAL
Автор: Tipulatoid
Дата сообщения: 27.02.2007 06:53
Не подскажете, имеется ли какая консольная утилита которая бы раскодировала файлы из текстового формата в бинарный (надеюсь, правильные термины употребляю). Т.е. в файлах EML почтовые проги сохраняют аттачи, закодированные буквами латинского алфавита. Надо выдрать их из EML-файла (это не проблема) и привести в первозданный вид.
Автор: Smitis
Дата сообщения: 27.02.2007 09:38
AnteC

Цитата:
Если нужно набросал автоинсталлер M$ хотфиксов для WinXp

Вот тут целая тема есть, заглохшая. Попробуй её поднять. http://forum.ru-board.com/topic.cgi?forum=62&bm=1&topic=3432#1
Автор: KapralBel
Дата сообщения: 27.02.2007 09:46
Tipulatoid
Взглянь в сторону 7-zip по заверениям работает с UUE-кодированием, но сам не пробовал
Автор: ViSiToR
Дата сообщения: 27.02.2007 10:38
igor_andreev

Цитата:
Ужасная формулировка

Дай другую, менее ужасную .


Цитата:
Причем здесь конец файла? Конец файла - это символ с кодом кажется 26.

При том, что перевод строки и возврат каретки происходит в конец файла (в данном случае).


Цитата:
А этот COM-файл что, не сторонняя?

Нет, как написал Elroir, это:


Цитата:
батнико-встроенная




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

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

Elroir

Цитата:
Может "Запись текста в файл без перевода(перехода) строки"?

Имхо, не совсем верно (и я вообще то не знаю что вы ужасного нашли в моей формулировке), тогда уже так:

“Альтернатива команде ECHO - позволяет выводить текст в файл без перевода строки”
Автор: KapralBel
Дата сообщения: 27.02.2007 11:07
igor_andreev

Цитата:
Тоже хотел еще написать, что консольных утилит для замены или удаления CRLF уйма существует, но все мне известные делают это во всем файле сразу

Хм... а как объяснить CLI-утилите где не надо удалять
Это только ручками в текстовом редакторе


А по поводу размещение батнико-встроенной утилиты в шапке
1. Не настолько это редко встречающаяся проблема
2. пусть будет
3. Какая разница на каком месте (если человек читает шапку - он её найдет, если не читает - то безразлично - есть там инфа или нет)

Автор: NIKZZZZ
Дата сообщения: 27.02.2007 11:53
igor_andreev
KapralBel

Цитата:
Тоже хотел еще написать, что консольных утилит для замены или удаления CRLF уйма существует, но все мне известные делают это во всем файле сразу

А кто мешает использовать перенаправление-
Util < echo text > file ?


Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Сбой активации XP sp2


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