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

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

Автор: wolf0425
Дата сообщения: 16.04.2008 15:01
bmax, файлы посчитать несложно
for /f %%a in ('dir /b /a:-d d:\2 ^| find /c /v ""') do set /a countfiles=%%a
из даты вырезать число тоже несложно %date:~0,2%
чего там тебе ещё не хватает для переименования?
ren /?
dir /?
for /?
Автор: JohnRD
Дата сообщения: 16.04.2008 15:38
KapralBel

спасибо, до меня не дошло как всегда

как можно проверить на присутствие в сети машины по ping,
если есть ping то запустить на ней батник... с помощью psexec

подсеть 192.168.60.1/24

нашел примеры умных людей но куда впихнуть запуск psexec ???

Код: Set cWork=0
For /l %%a In (2,1,254) Do Call :CompWork 192.168.0.%%a
If %cWork%==0 (ShutDown /?)
GoTo :EOF

:CompWork
Echo Ping %1
Ping -n 1 %1 >Nul
If ErrorLevel 1 (Goto :EOF)
If ErrorLevel 0 (Set cWork=1)
GoTo :EOF
Автор: bmax
Дата сообщения: 16.04.2008 15:59
wolf0425
для переименования вроде бы все есть, хелп читал, топик тоже, но не могу воедино собрать все что имею, буду рад любой помощи

@echo off
for /f "tokens=*" %%i in ('dir /b /s /a-d "D:\1\*.*"') do set /a count+=1
for /f "tokens=*" %%c in ('dir "D:\1\*.*" /t:c /b /a:-d') do (
xcopy "D:\1\%%c" D:\2\как присвоить имя 11сгодняшняя дата(толькочисло)количество файлов.другое расширение
goto :eof
)



Добавлено:
Всем спасибо, работает:

@echo off
for /f "tokens=*" %%i in ('dir /b /s /a-d "D:\1\*.*"') do set /a count+=1
for /f "tokens=*" %%c in ('dir "D:\1\*.*" /t:c /b /a:-d') do (
xcopy "D:\1\%%c" D:\2\11%date:~0,2%%count%.dvc
goto :eof
)

Добавлено:
Если количество файлов в паке которой считам меньше десяти как сделать так что бы в имени файла к количеству файлов добавлялся 0, т.е. , тчобы число всегда было двузначным

@echo off
for /f "tokens=*" %%i in ('dir /b /s /a-d "D:\1\*.*"') do set /a count+=1
for /f "tokens=*" %%c in ('dir "D:\1\*.*" /t:c /b /a:-d') do (
xcopy "D:\1\%%c" D:\2\11%date:~0,2%%count%.dvc
goto :eof
)
Автор: KapralBel
Дата сообщения: 16.04.2008 16:49
ebrr
taskkill /fi "windowtitle eq test.doc"

Добавлено:
JohnRD
If ErrorLevel 0 (Set cWork=1) - вот эта строка отвечает за удачный пинг
Автор: SymA
Дата сообщения: 16.04.2008 19:32
Ругается на это:


Код: ftp -s:downloadcomands.cms -A dnl-ru1.kaspersky-labs.com
Автор: 01MDM
Дата сообщения: 16.04.2008 20:34
SymA
А что в downloadcomands.cms?

Либо в нем указание на диск A:, либо с анонимным логином есть ограничения на скачку. Это только предположение.
Автор: KapralBel
Дата сообщения: 16.04.2008 20:38
SymA
В кратце повтори задачу - а то лень топик перелистывать

Имхо, если то что я думаю - то у меня на работе есть готовое решение
Автор: SymA
Дата сообщения: 16.04.2008 20:54
Необходимо скачать архив (обновление Антивирусных бах Касперского)

downloadcomands.cms

Код: get zips/av-i386&ids-cumul.zip C:\Downloads\Kis6\av-i386&ids-cumul.zip
quit
Автор: igor_andreev
Дата сообщения: 16.04.2008 21:10
SymA

Цитата:
Подскажите, как подправить ?

добавить команду BINARY в скрипт

Автор: SymA
Дата сообщения: 16.04.2008 21:26

Цитата:
добавить команду BINARY в скрипт


В какое место ?

Спасибо
Автор: wolf0425
Дата сообщения: 16.04.2008 21:35
bmax,
Цитата:
Если количество файлов в паке которой считам меньше десяти как сделать так что бы в имени файла к количеству файлов добавлялся 0, т.е. , тчобы число всегда было двузначным
чтобы всегда было двузначным:
set "count=0%count%"
set "count=%count:~-2%"
в одну строку не слеплять...

ну или тривиально через if напиши приписывание ноля...
А если вдруг случится 101 файл - что делать будешь?
Автор: igor_andreev
Дата сообщения: 16.04.2008 21:40

Цитата:
А можно пример ?

Да перед GET просто напиши.

binary
get file
quit

"File too large for TYPE A" - это значит файл слишком большой, чтоб качать его, как ascii (по умолчанию ftp.exe все тянет, как текстовые файлы)
Автор: 01MDM
Дата сообщения: 16.04.2008 22:15
SymA

wget тоже нормально выкачал:

Код:
wget -c "ftp://dnl-ru1.kaspersky-labs.com/zips/av-i386&ids-cumul.zip"
Автор: Serg41
Дата сообщения: 17.04.2008 06:55
народ, подскажите, пожалуйста, что я не так делаю.
Надо подключиться к ftp и скачать *.rar файлы и положить их себе, после чего их удалить от туда (с ftp) и файлики не удаляются, понять причину не могу
вот то что я сделал:

bat файл
ftp -v -i -s:cons.txt prime.perm.ru

файл cons.txt
*логин*
*пароль*
type binary
mget *.rar
delete *.rar
quit

и bat потом дальше идет а файлики на ftp не удаляются, разрешение на удаление есть, через Total Commander удаляю их спокойно

заранее спасибо
Автор: bmax
Дата сообщения: 17.04.2008 08:21
Огромное спасибо wolf0425

Цитата:
чтобы всегда было двузначным:
set "count=0%count%"
set "count=%count:~-2%"
в одну строку не слеплять...

ну или тривиально через if напиши приписывание ноля...
А если вдруг случится 101 файл - что делать будешь?


Нет у меня максимум 50 файлов, еще раз огромное спасибо всем, выручили.
Автор: JohnRD
Дата сообщения: 17.04.2008 10:46
KapralBel

как нибудь так?

Код: Set cWork=0
For /l %%a In (5,1,10) Do Call :CompWork 192.168.60.%%a
If %cWork%==0 (echo end)
Goto :EOF

:CompWork
Echo Ping %1
Ping -n 1 %1 >Nul
If ErrorLevel 1 (Goto :EOF)
If ErrorLevel 0 (Set cWork=1) | do psexec \\%1 -s -c 1.cmd
GoTo :EOF
Автор: igor_andreev
Дата сообщения: 17.04.2008 13:01
Serg41
Для работы с одним конкретным файлом на ftp используются команды GET, PUT, DEL(DELETE), а для работы с масками файлов - команды MGET, MPUT, MDEL(MDELETE).

В скрипт, для отключения интерактивного режима(чтоб не было вопросов от ftp-шника) перед командами MGET, MPUT, MDEL необходимо вставлять команду PROMPT
JohnRD

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

рандлл32 юзер32.дээлэл,апдейтперюзерсистемпараметры
Автор: Ortios
Дата сообщения: 17.04.2008 13:08
А никто не подскажет как Sed-ом убить все html-теги. Версия Seda - 3.59. Элементарная задача, но ничего пока не выходит.
Автор: igor_andreev
Дата сообщения: 17.04.2008 13:23
Ortios
В гугле набери "sed + remove most html tags" (без кавычек) кучу oneliner-ов и примеров найдешь. Примеры в основном для Линукса, поэтому одинарные кавычки(') меняй на двойные("). Самый простой вариант наверно этот :

Код:
sed -e "s/<[^>]*>//g" test.html>test.txt
Автор: Ortios
Дата сообщения: 17.04.2008 14:02
Вот спасибо, igor_andreev, двойных кавычек мне и не хватало. Неделю с Sed-om не возился, так все из головы вылетело.
Автор: SymA
Дата сообщения: 17.04.2008 18:14
Как залить по фтп файл на somename.narod.ru ?

БАТ:

Код: ftp -v -s:somecommands.txt somename.narod.ru
Автор: BorlandIMHO
Дата сообщения: 17.04.2008 22:51
SymA
А что Ты хочешь получить в результате?
У меня, например, по вышеприведённой команде вообще ничего не создаётся...
И, похоже, не должно - стоило добавить arc в качестве имени архива (после m5) - как тут же создался архив arc20080417233633.rar, в который упаковался %systemroot%\some.txt
Автор: SymA
Дата сообщения: 17.04.2008 23:08
BorlandIMHO
Спасибо, уже решил вопрос.

Интересует как залить файл по фтп на narod.ru (смотреть предидущий пост)
Автор: Nagual
Дата сообщения: 18.04.2008 00:22
SymA
curl -T file.ext ftp://login:pass@ftp.narod.ru/dir/subdir/
Автор: Serg41
Дата сообщения: 18.04.2008 06:43

Цитата:
igor_andreev

большое спасибо, все заработало
Автор: bmax
Дата сообщения: 18.04.2008 13:24
Господа, подскажите что не так.
Необходимо чтобы перед тем как скопировать батник проверял файл на наличие в нем строки <QW12345. Смотреть необходимо начиная с 7-ой строки и вслучае если такая подстрока есть файл не копировать, если же такой подстроки нет - то копирование выполняется.

@echo off
FOR /f "tokens=*" %%i in ('dir /b /s /a-d "D:\2\*.*"') do set /a count+=1
IF EXIST D:\2\*.* set "count=0%count%" ELSE
set "count=00%count%"
set "count=%count:~-2%"
for /f "tokens=*" %%c in ('dir "D:\2\*.*" /o:-d /t:c /b /a:-d') do (
for /f "skip=6" %%q in ('find "<QW12345" D:\1\%%c') do set flag=1
if not defined flag copy /y /D "D:\1\%%c" "D:\2\11%date:~0,2%%count%.dvc"
goto :eof
)
Автор: 01MDM
Дата сообщения: 18.04.2008 14:00
bmax


Код:
@echo off
for /f "tokens=*" %%i in ('dir /b /s /a-d D:\2\*.*') do (
    more +6 "%%i" | findstr "<QW12345" 1>nul || (
здесь копируешь "%%i"
)
)
Автор: wolf0425
Дата сообщения: 18.04.2008 14:34
set "count=0"
FOR /f "tokens=*" %%i in ('dir /b /s /a-d "D:\2\*.*"') do set /a count+=1
set "count=00%count%"
set "count=%count:~-2%"

а это шапка без if-else

вот толкьо интересно - с чего dir /b /s затесалось в первый фор и пропало в копировании
Автор: bmax
Дата сообщения: 18.04.2008 14:37
01MDM Спасибочки, работает

@echo off
FOR /f "tokens=*" %%i in ('dir /b /s /a-d "D:\2\*.*"') do set /a count+=1
IF EXIST D:\2\*.* set "count=0%count%" ELSE
set "count=00%count%"
set "count=%count:~-2%"
for /f "tokens=*" %%c in ('dir "D:\1\*.*" /o:-d /t:c /b /a:-d') do (
more +6 "D:\1\%%c" | findstr "<EA323" 1>nul || (
copy /y /D "D:\1\%%c" "D:\2\11%date:~0,2%%count%.dvc"
goto :eof
)
)


Автор: wolf0425
Дата сообщения: 18.04.2008 14:43

Цитата:
goto :eof
э... тебе надо скопировать один файл или много?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Сброс пароля администратора


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