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

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

Автор: alers
Дата сообщения: 25.10.2007 06:43
можно ли с помощью бат файла удалить n-ое количество строк из txt файла ? нужно из логов каждый день удалять примерно по 100 строк)
Автор: KapralBel
Дата сообщения: 25.10.2007 08:44
alers
Где удалить ?
В начале или в конце?
В начале - очень легко

FOR /F "skip=100 delims=" %%a in (1.txt) Do Echo %%a>2.txt
Автор: kalkin5
Дата сообщения: 25.10.2007 12:41
подскажите как сделать:
нужно через if проверить существование папки (c:\Documents and Settings\All Users\Главное меню\Программы), если есть то ... если нет перейти к след пункту
конкретный пример нужно положить ярлык в меню пуск - программы, но сложность в том что дома англ версия винды, а на работе русская
Автор: Elroir
Дата сообщения: 25.10.2007 12:50
kalkin5

Код:
if exist "c:\Documents and Settings\All Users\Главное меню\Программы\nul" (...) else (...)
Автор: Smitis
Дата сообщения: 25.10.2007 16:20
Elroir

Цитата:
if exist "c:\Documents and Settings\All Users\Главное меню\Программы\nul" (...) else (...)

Это ты погорячился. Так не работает. Т.е. работает, но только для коротких имён.
Автор: Elroir
Дата сообщения: 25.10.2007 16:47
Smitis

Цитата:
Это ты погорячился. Так не работает. Т.е. работает, но только для коротких имён.

Черт! Прав, конечно.

kalkin5
Ну тогда так:

Код:
@echo off
for /f "tokens=*" %%a in ("c:\Documents and Settings\All Users\Главное меню\Программы") do (
if exist %%~sa\nul (...) esle (...)
)
Автор: Smitis
Дата сообщения: 25.10.2007 16:49
Elroir
Лучше так (пример):

Код:
@echo off
call :direxist "C:\Program Files\Windows Media Player"
if errorlevel 1 echo OK!
if not errorlevel 1 echo NO!
call :direxist "C:\Program Files\Windows Media Player\mplayer2.exe"
if errorlevel 1 echo OK!
if not errorlevel 1 echo NO!

goto:eof
:direxist
setlocal
set a=%~a1
set b=%a:d=%
if %a% == %b% exit/b
exit/b 1
Автор: igor_andreev
Дата сообщения: 25.10.2007 23:46

Цитата:
Т.е. работает, но только для коротких имён.

Можно путь к папке с пробелами заключать в кавычки и после кавычек ставить обратный слэш(без NUL)

Код:
if exist C:\TEST\NUL echo OK!
if exist "C:\Program Files\Windows Media Player"\ echo OK!
Автор: Smitis
Дата сообщения: 26.10.2007 14:04
igor_andreev
Неплохо
Только обратный слешь можно и внутри кавычек ставить.
Автор: kalkin5
Дата сообщения: 27.10.2007 17:54
всем спасибо, кто откликнулся

всегда хотелось узнать можно ли с помощью bat файла создать ярлык к файлу,
если можно на примере пож-та:
Файл:            %ProgramFiles%\TC_EX\totalcmd.exe
Аргументы:        /I=".\Profiles\work\wincmd.ini" /F=".\Profiles\work\wcx_ftp.ini
Рабочий каталог:    %programfiles%\TC_EX
Горячая клавиша:    Нет
Окно:            Обычный размер
Путь к иконке:    %ProgramFiles%\TC_EX\ICO\commander\tc_red.ico
            номер значка: 0
Автор: Elroir
Дата сообщения: 27.10.2007 21:37
kalkin5
Встроенными средствами нельзя. Если воспользоваться утилитой nircmd, то можно так:

Код:
@echo off
nircmdc shortcut "%%ProgramFiles%%\TC_EX\totalcmd.exe" ".\" "TotalCommander" "/I=".\Profiles\work\wincmd.ini" /F=".\Profiles\work\wcx_ftp.ini"" "%%ProgramFiles%%\TC_EX\ICO\commander\tc_red.ico" "0"
Автор: Tipulatoid
Дата сообщения: 27.10.2007 22:11
Можно ли заставить команду echo писать в два файла одновременно? Что-то вроде
Код: echo test >1.txt >2.txt
Автор: Elroir
Дата сообщения: 27.10.2007 23:01
Tipulatoid

Цитата:
Можно ли заставить команду echo писать в два файла одновременно?

Встроенными средствами нельзя. (Ну только если два раза запустить )
Есть утилита mtee, которая перенаправляет входной поток в любое количество файлов:

Код:
echo test | mtee 1.txt 2.txt
Автор: Tipulatoid
Дата сообщения: 28.10.2007 01:35
Elroir
Спасибо. Еще вопрос:
В реестре у меня по пути HKCU\Software\RIT\The Bat! есть параметр Working Directory со значением %APPDATA%\The Bat!\ Такой вот код
Код: @echo off
setlocal enabledelayedexpansion

set foundbat=no
reg query "HKCU\Software\RIT\The Bat^!" /s > nul && set foundbat=yes

if /i %foundbat%==no (
echo 
echo.
echo Не удалось обнаружить почтовый клиент The Bat в системе. Чтобы далее
echo использовать преимущества AutoSend^&Get, вам нужно установить The Bat.
echo Дальнейшая работа AutoSend^&Get на данный момент невозможна.
echo.
goto end
) else (
for /f "tokens=3*" %%a in ('reg query "HKCU\Software\RIT\The Bat^!" /v "EXE path"') do set mailclient=%%b
for /f "tokens=3*" %%a in ('reg query "HKCU\Software\RIT\The Bat^!" /v "Working Directory"') do set mailworkdir=%%b
)

echo %mailclient%
echo %mailworkdir%

:end
echo End
Автор: Elroir
Дата сообщения: 28.10.2007 02:30
Tipulatoid
Да.... Задачка получилась нетривиальная.
Целый час на нее убил
Вот, что получилось:

Код:
@echo off
setlocal enabledelayedexpansion

call :try

for /f "tokens=*" %%c in ('echo !mailworkdir!') do set "test=%%c"
echo !test!

goto :EOF

:try
setlocal disabledelayedexpansion
for /f "tokens=3*" %%a in ('reg query "HKCU\Software\RIT\The Bat!" /v "Working Directory"') do set "mailworkdir=%%b"
set "mailworkdir=%mailworkdir:!=^^^^^!%"
endlocal & set "mailworkdir=%mailworkdir%"
Автор: Maza Faka
Дата сообщения: 29.10.2007 10:35
Tipulatoid

Код:
@echo off
setlocal enabledelayedexpansion

set foundbat=no
reg query "HKCU\Software\RIT\The Bat^!" /s > nul && set foundbat=yes

if /i %foundbat%==no (
echo
echo.
echo Не удалось обнаружить почтовый клиент The Bat в системе. Чтобы далее
echo использовать преимущества AutoSend^&Get, вам нужно установить The Bat.
echo Дальнейшая работа AutoSend^&Get на данный момент невозможна.
echo.
goto end
) else (
for /f "tokens=3*" %%a in ('reg query "HKCU\Software\RIT\The Bat^!" /v "EXE path"') do call set mailclient=%%b
for /f "tokens=3*" %%a in ('reg query "HKCU\Software\RIT\The Bat^!" /v "Working Directory"') do call set mailworkdir=%%b
)

setlocal disabledelayedexpansion

set mailworkdir=%mailworkdir:~0,-1%
set mailworkdir=%mailworkdir%^!\

echo %mailclient%
echo %mailworkdir%

:end
echo End
Автор: Elroir
Дата сообщения: 29.10.2007 10:52
Maza Faka
А если там нестандартный путь?
Автор: Tipulatoid
Дата сообщения: 29.10.2007 10:58
И еще вопрос Существует ли несложный способ получения короткого пути к файлу? что-то вроде
C:\PROGRA~1\MICROS~2\TEMPLA~1\newsha~1.dot
вместо
C:\Program Files\Microsoft Office\Templates\newshablon.dot
Автор: KapralBel
Дата сообщения: 29.10.2007 11:06
Tipulatoid
Dir /x, но это надо разбирать все папки до корня
Автор: Elroir
Дата сообщения: 29.10.2007 11:21
Tipulatoid
Если такой путь и файл существуют, можно так:

Код:
for /f "tokens=*" %%a in ("C:\Program Files\Microsoft Office\Templates\newshablon.dot") do echo %%~sa
Автор: Tipulatoid
Дата сообщения: 29.10.2007 13:54
Maza Faka
Спасибо, но путь и вправду может быть нестандартным - так что вариант Elroir предпочтительнее.
KapralBel
И вам спасибо; про dir /x я знал, но именно этот вариант мне показался сложным
Elroir
То, что надо Как-то умудрился не заметить в справке этот модификатор. Thanks
Автор: soulthiefer
Дата сообщения: 30.10.2007 10:02
Помогите пожалуйста!!
оч нужен бат файл который бы проверял размер файла в интернете.файл постоянно один и тот же например www.ya.ru/1.gif .размер файла нужно сравнивать с 0! если 0 то нужно перезагрузить комп если нет тогда ничего не нужно делать!!!!!!!!!(можно просто смотреть есть файл или нет ! есть- перезагрузить .. нет - ничего не делать)
ПОМОГИТЕ ПОЖАЛУЙСТА ЛЮДИ УМНЫЕ!!!!!
Автор: igor_andreev
Дата сообщения: 30.10.2007 12:54
soulthiefer

Код:
wget --spider -o d:\wget.log http://i.ru-board.com/images/remake1.gif
Автор: soulthiefer
Дата сообщения: 30.10.2007 13:13
igor_andreev
а как в самом батнике обработать ответ подскажите плз ? я просто вообще ноль в этом (
Автор: igor_andreev
Дата сообщения: 30.10.2007 13:49
soulthiefer
wget тут http://users.ugent.be/~bpuype/wget/#download

Код:
wget --spider -o "%temp%\wget.log" http://i.ru-board.com/images/remake1.gif
find /i "200 OK" "%temp%\wget.log" && shutdown -f -r -t 00
Автор: soulthiefer
Дата сообщения: 30.10.2007 14:23
igor_andreev
извините за непонятливасть ( просто проблема с ледующем !
мой файл лежит http://soulthiefer.narod.ru/1.txt на этот адрес я заменяю ваш что в батнике .. и лог мне постоянно выдает следующее:
--14:21:04-- http://soulthiefer.narod.ru/1.txt
=> `1.txt'
Resolving soulthiefer.narod.ru... done.
Connecting to soulthiefer.narod.ru[213.180.199.43]:80... connected.
HTTP request sent, awaiting response...
Read error (No such file or directory) in headers.
Retrying.

--14:21:25-- http://soulthiefer.narod.ru/1.txt
(try: 2) => `1.txt'
Connecting to soulthiefer.narod.ru[213.180.199.43]:80... connected.
HTTP request sent, awaiting response...
Read error (No such file or directory) in headers.
Retrying.

и так далее хотя файл есть если помотреть в эксплорере!
Автор: 01MDM
Дата сообщения: 30.10.2007 14:53
soulthiefer
1111111111111111111111111111111111111

Странно, что закачался, а потом пропал, т.е больше не закачивается ни через вигет, ни чем.
Автор: Elroir
Дата сообщения: 30.10.2007 15:05
01MDM
Ну так soulthiefer убрал файл
Он же написал - файл либо есть, либо нет.
Автор: soulthiefer
Дата сообщения: 30.10.2007 15:50
ВСЕ работает !!!!!!!!!! Спасибо igor_andreev огромное оч выручили!!!!!!!!!!!!
Автор: igor_andreev
Дата сообщения: 30.10.2007 17:02
soulthiefer

Цитата:
мой файл лежит http://soulthiefer.narod.ru/1.txt на этот адрес я заменяю ваш что в батнике .. и лог мне постоянно выдает следующее:

Яб не доверял какие-нить важные задачи бесплатному хостингу, народ.ру - известный тормоз, запросто может быть недоступен или еще что... Я похожим макаром рулю всеми компами на работе, nnCron+wget на всех машинах регулярно проверяют похожий 1.txt(в нем текст батника) и делают, что в нем написано. Удобно с ноутбука управлять, когда сам в командировке за три тыщщи километров от работы. Но мой 1.txt на платном хостинге и всегда доступен. А на народе - вставь в первую строчку пинг например

Код:
ping -n 1 http://soulthiefer.narod.ru && wget и т.д.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879

Предыдущая тема: Problemi s zagruzkoy XP!


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