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

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

Автор: ailman85
Дата сообщения: 21.07.2008 13:13
А как сделать так, чтобы из каталога удалялись все файлы, кроме одного, который содержит в названии сегодняшнюю дату???
Автор: 01MDM
Дата сообщения: 21.07.2008 13:50
ailman85

Код:
@echo off
attrib +r *%date%*
del /q *.* 1>nul 2>&1
attrb -r *%date%*
Автор: ailman85
Дата сообщения: 21.07.2008 14:07
Спасибо! Помогло
Автор: Kilich
Дата сообщения: 21.07.2008 16:37
01MDM

Цитата:
del /q *.* 1>nul 2>&1

Давно хотел спросить что означает (1),(2), и &1

А лучше прокоментируйте строку я только понял до 1
Автор: KapralBel
Дата сообщения: 21.07.2008 16:43
Kilich
См. Встроенный справочник по командам
Автор: Svjt
Дата сообщения: 21.07.2008 22:37
Доброе время суток...

Может кто-нить помочь с написание батника, в чьи обязанности входит:
1 - скачивание с защищённого паролем сайта отпределённого файла с именем fed%1_%2_%2.rtf, где %1 - дата субботы, %2 - месяц, %3 - соответственно год.
2 - отправка этого файла на список адресов (примерно 70-80 штук)

Первое - понятно, с помошью wget могно осилить, загвостка лишь в определении даты субботы и расстановка именно так %1_%2_%3... А вот второй момент у меня так и не получился, не получается даже себе из консоли письмо отправить... Ответ примерно таков:
Blat v2.6.2 w/GSS encryption (build : Feb 25 2007 12:06:19)
Sending test.txt to zergius@rkmail.ru
Subject: test_blat
Login name is zergius@rkmail.ru
The SMTP server does not require AUTH LOGIN.
Are you sure server supports AUTH?
Хотя вроде всё верно вводил при "blat -install"

Могет кто подсказать приличный материал по теме отправки писем из консоли на русском?
Автор: leecher666
Дата сообщения: 21.07.2008 23:11
Помогите
локальная сеть настроена по dhcp, получает ip, шлюз и днс...
Цитата:
chcp 1251 1>nul
netsh interface ip show address | find /i "шлюз"
chcp 866 1>nul
эта команда возвращает строку.
Как выдрать из этой строки именно часть XXX шлюза: ***.***.XXX.***
И присвоить переменной для дальнейшей работы
Автор: Tipulatoid
Дата сообщения: 22.07.2008 10:27
leecher666

Код: @echo off
chcp 1251 1>nul
for /f "tokens=3 delims=." %%a in ('netsh interface ip show address | find /i "шлюз"') do set var=%%a
chcp 866 1>nul
echo %var%
Автор: igor_andreev
Дата сообщения: 22.07.2008 10:39
Svjt

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

В планировщик забей запуск батника по субботам, да и голову не ломай. %1 будет сегодняшним числом.

Цитата:
и расстановка именно так %1_%2_%3

В шапке "Работа с текстом, датой, и файлами" и по всем пяти частям этого топика примеров полно.

Цитата:
The SMTP server does not require AUTH LOGIN.
Are you sure server supports AUTH?

smtp-сервер провайдера вбил в -install наверно, а он авторизации не требует?
Автор: Nagual
Дата сообщения: 22.07.2008 10:50
Вопрос к Игорю Андрееву
есть локальный весомый (~ 20 Мб) бинарный файл с определенной версией
на сервере лежит файл с более новой версией
необходимо докачать с помощью wget (curl) файл с сервера так, чтобы версия локального файла сменилась на версию файла с сервера
вся загвоздка именно в том, что версия файла не обновляется
Автор: igor_andreev
Дата сообщения: 22.07.2008 11:03
Nagual

Цитата:
Вопрос к Игорю Андрееву

да тут и кроме меня народу полно
Бинарник - только перекачивать заново.
Автор: ailman85
Дата сообщения: 22.07.2008 11:14
Кто-нибудь может сказать, как сравнить в батнике два числа,одно из которых больше 32 бит, а другое может быть как больше 32 бит, так и меньше???
Автор: MsdLamer
Дата сообщения: 22.07.2008 11:34
Здравствуйте мастера. Подскажите пожалуйста как из текстового файла удалить все знаки = (равно), попробовал этот пример:

setlocal enabledelayedexpansion
for /f "delims=" %%a in (C:\Statistic\TEMP2.TXT) do (
set string=%%a
set string=!string:== !
echo.!string!>> C:\Statistic\TEMP3.TXT)

что-то не получается, получается аж 2 равно..)))

и еще одно подскажите пожалуйста как реализовать следующее.... Имеется текстовый файл следующего содержания:

2 // числа могут быть обсолютно разными но 3 цифры это максимум
22434234234234 // по любому больше 3-х цифр.
23423423423423
24
09099999999999
104
989898989898
77787878787878
67667676767676

можно сделать так чтобы это один большой файл разбить на маленькие:
Допустим 2.тхт содержит
2
22434234234234
23423423423423

24.тхт содержит
24
09099999999999
и.т.д т.е . чтобы верхний номер был названием файла. Спасибо.
Автор: Tipulatoid
Дата сообщения: 22.07.2008 12:52
MsdLamer
На второй вопрос:

Код: @echo off
setlocal enabledelayedexpansion
for /f %%a in (file.txt) do (
set number=%%a
set forth_symbol=!number:~3,1!
if not defined forth_symbol set small_number=!number!
echo !number!>>!small_number!.txt
)
Автор: igor_andreev
Дата сообщения: 22.07.2008 13:23

Цитата:
На первый - не знаю как без сторонних утилит

Разве что так

Код:
for /f "tokens=1-26 delims==" %%a in (TEMP2.TXT) do call :replace %%a %%b %%c %%d %%e %%f %%g %%h %%i %%j %%k %%l %%m %%n %%o %%p %%q %%r %%s %%t %%u %%v %%w %%x %%y %%z
goto :eof
:replace
echo %*>>TEMP3.TXT
Автор: Svjt
Дата сообщения: 22.07.2008 13:54
Разобрался... Спасибо Народу и Гуглу... Если кому надо выкладываю:

Код:
rem Сначала берём дату сегодня
for /f %%d in ('date /t') do set dt=%%d
echo %dt%

rem Потом меняем все "-" на "_"
for /f "delims=. tokens=1,2,3" %%i in ("%dt%") do set ndt=%%i_%%j_%%k


set DIR=папка назначения файла
echo %ndt%

own

wget --http-user=name --http-password=pwd --directory-prefix=%DIR%\ http://линк до конечного файла...
rem Проверка, скачалось ли
if exist %DIR%\*.* goto mail
goto down

:mail
rem Ну и собственно рассылка каждому подписчику в отдельности из файла adress.txt (адреса пишете в столбик по одному)
for /f %%I in (adress.txt) Do blat body.txt -to %%I -subject "тема письма" -attach %DIR%\*.* -ti 30 -try 3 -charset windows-1251

rem Удаление файла, за ненадобностью...
del %DIR%\*.*
Автор: Sabiko
Дата сообщения: 22.07.2008 17:44
Я окончательно запуталась, поэтому приходятся просить помощи.

Задачи две:
1. Есть папка с кучей вложенных подкатологов, имена подкаталогов всегда уникальны. В подкаталогах переодически попадается файл a.txt — нужно дать ему уникальное название (включающее имя подкатолога, в котором он находится) и переместить в корень.

У меня, возможно, что-нибудь получилось бы, если бы можно было брать взятие подстрок с конца, ведь точное кол-во подстрок (если брать \ как разделитель) неизвестно! Но в документации нигде про подобное действие tokens не говорится..

Ниже вариант из разряда "фигачим":
Код:
for /f "usebackq tokens=1* delims=^" %%i in (`dir /b /s /a:d`) do ren "%%i^%%j/a.txt" "%%j.txt"
Автор: 01MDM
Дата сообщения: 22.07.2008 18:35
Sabiko

Можно так, жарко шевелить мозгами:

Код:
@echo off
for /f "tokens=*" %%i in ('dir /b /s Folder\a.txt') do call:move "%%~dpi"
goto:eof

:move
set curpath=%~1
set curpath=%curpath:\=,%
set curpath=%curpath: =_%

for %%i in (%curpath%) do set folder=%%i
set folder=%folder:_= %

move "%~1a.txt" "Folder\a_%folder%.txt"
Автор: igor_andreev
Дата сообщения: 22.07.2008 23:09
Sabiko

Цитата:
1. Есть папка с кучей вложенных подкатологов, имена подкаталогов всегда уникальны. В подкаталогах переодически попадается файл a.txt — нужно дать ему уникальное название (включающее имя подкатолога, в котором он находится) и переместить в корень.


Код:
@echo off
pushd d:\folder
for /r /d %%a in (*) do if exist "%%a\a.txt" move "%%a\a.txt" "a_%%~nxa.txt"
Автор: lamener
Дата сообщения: 23.07.2008 09:16
Всем Доброго времени суток !!
Вот есть задача !! Самому ее реализовать не получается !


Цитата:

Существует каталог с кучей подкаталогов с файлами имена всегда разные.
Переместить все подкаталоги с файлами из указанного каталога в назначенный каталог, и в каждом из перемещенных подкаталогов создать текстовый документ (имя документа 9.txt), содержание документа - "имя подкаталога"

Может кто подскажет ?
Автор: king_stiven
Дата сообщения: 23.07.2008 10:48
lamener
Существует каталог с кучей подкаталогов E:\1
в назначенный каталог E:\2

Код: @echo off
cd /d "E:\1"
for /D %%e in (*) do (
move "%%e" "E:\2"
echo %%~nxe > "E:\2\%%~nxe\9.txt"
)
Автор: MsdLamer
Дата сообщения: 23.07.2008 11:56

Цитата:
Цитата:На первый - не знаю как без сторонних утилит


Разве что так

Код:
for /f "tokens=1-26 delims==" %%a in (TEMP2.TXT) do call :replace %%a %%b %%c %%d %%e %%f %%g %%h %%i %%j %%k %%l %%m %%n %%o %%p %%q %%r %%s %%t %%u %%v %%w %%x %%y %%z
goto :eof
:replace
echo %*>>TEMP3.TXT


Сработает ессно, если знаков равно в каждой строке меньше 26 будет


Если текст такой

= 2
2300000086416
= 3
3348900821897
= 47
3352818716008
766124033705
= 56
3600521119563
4005808837359


то получается вот, что после обработки

2300000086416
3348900821897
47
3352818716008
766124033705
56
3600521119563
4005808837359

т.е. съедает цифры, подскажите пожалуйста как испровить Спасибо.




Автор: igor_andreev
Дата сообщения: 23.07.2008 12:10
MsdLamer

Цитата:
т.е. съедает цифры, подскажите пожалуйста как испровить

Пробел вставь между %* и знаком перенаправления >>

Код:
echo %* >>TEMP3.TXT
Автор: MsdLamer
Дата сообщения: 23.07.2008 17:48

Цитата:
MsdLamer

Цитата:т.е. съедает цифры, подскажите пожалуйста как испровить


Пробел вставь между %* и знаком перенаправления >>

Код:
echo %* >>TEMP3.TXT


Спасибо, но теперь когда я добавил пробел все цифрв появились, но если идет

3352818716008
766124033705
то остается только 3352818716008, почему он убирает те которые короче? Подскажите. Как исправить? Спасибо.
Автор: igor_andreev
Дата сообщения: 23.07.2008 18:14
MsdLamer
Не могу у себя воспроизвести, по крайней мере на том куске текста, который ты привел. Все пишет.
Автор: lamener
Дата сообщения: 24.07.2008 09:09
Всем Доброго времени суток !!
Вот есть задача !! Самому ее реализовать не получается !


Цитата:

Существует каталог с кучей подкаталогов с файлами имена всегда разные.
Переместить все подкаталоги с файлами из указанного каталога в назначенный каталог, и в каждом из перемещенных подкаталогов создать текстовый документ (имя документа 9.txt), содержание документа - "имя подкаталога"


код выполнения этой задачи
Огромная благодарность king_stiven за помощь !!

Код:
@echo off
cd /d "E:\1"
if not errorlevel 1 (
for /D %%e in (*) do (
move "%%e" "E:\2"
echo %%~nxe > "E:\2\%%~nxe\9.txt"
)
)
Автор: ailman85
Дата сообщения: 24.07.2008 12:36
Всем доброго времени суток!
Подскажите, пожалуйста, как можно в числовой переменной вырезать последние 3 цифры и загнать получившееся число в новую переменную.
Т.е., например, если было число 192859496751, то новое число получится 192859496
Помогите, плиз! Оч. нуно!
Автор: Elroir
Дата сообщения: 24.07.2008 12:43
ailman85
Предположим, что число находится в переменной number, тогда:

Код:
set "new_number=%number:~-3%"
Автор: ailman85
Дата сообщения: 24.07.2008 13:50

Цитата:
Elroir


Цитата:
Код:
set "new_number=%number:~-3%"


Здесь у меня получается так:
Например number=438751357389
Тогда, если

new_number=%number:~-3%,

он мне выдает 389, т.е. последние 3 цифры.

Если же поставить ~+3% то он мне показывает число 751357389, т.е. без первых трех цифр.

А как сделать так, чтобы он мне показал 438751357, т.е. это же число, но без последних 3-х цифр???
Автор: yurkesha
Дата сообщения: 24.07.2008 14:05

Код: set number=438751357389
set new_number=%number:~0,-3%
echo %new_number%

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

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


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