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

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

Автор: angeltwo
Дата сообщения: 28.05.2008 12:10
Propretor

Переменная File должна быть не в %%, а в !!

Код: @SETLOCAL EnableDelayedExpansion
@SET FILE=
@FOR %%f in (*.tif) do (SET FILE=%%f & ECHO !FILE! & ECHO !FILE:.ozf2=!)
@SETLOCAL DisableDelayedExpansion
Автор: 01MDM
Дата сообщения: 28.05.2008 12:10
Propretor

Код:
@echo off
setlocal

for %%i in (*.tif) do set "file=%%i" && call:write
goto:eof

:write
echo %file:.ozf2=%
Автор: Propretor
Дата сообщения: 28.05.2008 12:44
angeltwo
01MDM
Ребята, спасибо за помощь!

01MDM
Зачем && вместо & ?

angeltwo
Так:
@SETLOCAL EnableDelayedExpansion
@SET FILE=
@FOR %%f in (*.tif) do (SET FILE=!!f & ECHO !FILE! & ECHO !FILE:.ozf2=!)
@SETLOCAL DisableDelayedExpansion

Добавлено:
01MDM
Может так?

SETLOCAL EnableDelayedExpansion
for %%i in (*.tif) do set "file=%%i" & call echo %file:.ozf2=%
SETLOCAL DisableDelayedExpansion

и почему тогда не так:

SETLOCAL EnableDelayedExpansion
for %%i in (*.tif) do set "file=%%i" & echo %file:.ozf2=%
SETLOCAL DisableDelayedExpansion
Автор: wolf0425
Дата сообщения: 28.05.2008 13:32
Propretor,
@SETLOCAL EnableDelayedExpansion
@FOR %%f in (*.tif) do (SET FILE=%%f & ECHO !FILE! & ECHO !FILE:.ozf2=!)



Цитата:
и почему тогда не так:
SETLOCAL EnableDelayedExpansion
for %%i in (*.tif) do set "file=%%i" & echo %file:.ozf2=%

потому что все %file% заменются значением во время разбора строки, а не вычисляется заново после set "file=%%i"
А вот !file! - подставляется значение только в момент исполнения
Автор: Propretor
Дата сообщения: 28.05.2008 13:51
wolf0425
А зачем кавычки здесь:
for %%i in (*.tif) do set "file=%%i" & echo %file:.ozf2=%
Автор: 01MDM
Дата сообщения: 28.05.2008 17:07
Propretor
В данном конкретном случае можно и без кавычек. Просто привычка.
Автор: Belousov
Дата сообщения: 28.05.2008 18:50
Очень нужна Ваша помощь.
Есть каталог очереди печати куда падают файлы посланные на принтер. Имя файла это порядковый номер задания дополненный нулями слева, так чтобы имя всегда состояло из пяти знаков.
Первое- необходимо при запуске батника найти файл с максимальным номером в имени файла (или самый свежий файл по дате создания). Далее необходимо выделить из имени этого файла номер и при появлении файла с большим номером выполнить нужные действия (к примеру копирование) и так по цыклу, при появлении файла со следующим номером действия повторяются.
Спасибо.
Автор: 01MDM
Дата сообщения: 28.05.2008 19:56
Belousov

Попробуй так, батник должен быть за пределами папки C:\Folder

Код:
@echo off
setlocal

pushd "C:\Folder"
for /f "tokens=*" %%i in ('dir /b ^| sort /r') do copy "%%i" "D:\SomeFolder"
popd
Автор: JohnRD
Дата сообщения: 29.05.2008 14:24
день добрый

кто имел дело с утилитой getmail

если использовать так getmail -s mail.test.domain.ru -u info@test.domain.ru -pw 212121 -xtract -delete
то она не может вытащить вложения txt xml
зато zip doc вытаскивает

с ключем -plain зависает в этом состоянии, висит минут 5-10 распаковывает, но коверкает русский текст.
как правильно вытащить русский текст и ускорить.
для чего этот ключ -forceextract fn: Attempt to extract any encoded messages in 'fn'


Код: E:\install\GetMail>getmail -s mail.test.domain.ru -u info@test.domain.ru -pw 212121 -xtract -plain -delete
Failed to open registry key for GetMail profile , using default.
Failed to open registry key for GetMail
Getting info@test.domain.ru's mailbox contents from server mail.test.domain.ru:110
There are 1 messages on the server.
Retrieving Message #1 (419753 bytes) into 'MSG4.TXT'...ok
Extracting non-encoded message to 80020_616402001N_080401_6024.xml...
Автор: igor_andreev
Дата сообщения: 29.05.2008 15:34
JohnRD

Цитата:
если использовать так getmail -s mail.test.domain.ru -u info@test.domain.ru -pw 212121 -xtract -delete
то она не может вытащить вложения txt xml
зато zip doc вытаскивает

Ложь!

Цитата:
Retrieving Message #1 (419753 bytes) into 'MSG4.TXT'...ok
Extracting non-encoded message to 80020_616402001N_080401_6024.xml

А ты уверен, что посылаешь как вложение? Должно быть вот так:

Код:
Extracting MIME base64 encoded message to test.txt...
Undecoded length: 388...decoded length: 291...OK
Extracting MIME base64 encoded message to test.xml...
Undecoded length: 6892...decoded length: 5169...OK
Автор: JohnRD
Дата сообщения: 29.05.2008 16:01
igor_andreev

так и есть но когда вложен zip doc rar
как только txt xml то вобще не вытаскивает а вытаскивает только с -plain но долго и без русских символов

Код: E:\install\GetMail>1.cmd

E:\install\GetMail>getmail -s mail.test.domain.ru -u info@test.domain.ru -pw 212121 -xtract -delete
Failed to open registry key for GetMail profile , using default.
Failed to open registry key for GetMail
Getting info@test.domain.ru's mailbox contents from server mail.test.domain.ru:110
There are 1 messages on the server.
Retrieving Message #1 (71633 bytes) into 'MSG1.TXT'...ok
Extracting MIME base64 encoded message to getmail.zip...
Undecoded length: 68164...decoded length: 51123...OK
Автор: igor_andreev
Дата сообщения: 29.05.2008 16:05
JohnRD
посмотри настройки почтовой программы, я написал, а оно прибавилось к моему сообщению на предыдущей странице. Я только что отправил и из командной строки blat-ом и Outlook Express-ом - все нормально, вложения получил, и txt и xml и zip
Автор: JohnRD
Дата сообщения: 29.05.2008 16:48
igor_andreev

E:\install\GetMail>1.cmd


Код: E:\install\GetMail>getmail -s mail.test.domain.ru -u info@test.domain.ru -pw 212121 -xtract -delete
Failed to open registry key for GetMail profile , using default.
Failed to open registry key for GetMail
Getting info@test.domain.ru's mailbox contents from server mail.test.domain.ru:110
There are 1 messages on the server.
Retrieving Message #1 (419117 bytes) into 'MSG1.TXT'...ok
Extracting MIME base64 encoded message to Extract1.out...
Undecoded length: 0...decoded length: 0...OK
Автор: igor_andreev
Дата сообщения: 29.05.2008 16:51
JohnRD
Чем отсылаешь? Это не getmail косяк, это в твоей почтовой программе что-то, она не отправляет txt и xml как бинарное вложение в base64. Blat попробуй, он по умолчанию все правильно делает

Код:
blat letter_body.txt -to recipient@server.ru -attach d:\test.txt -attach d:\test.xml -attach d:\test.zip
Автор: JohnRD
Дата сообщения: 29.05.2008 17:05
igor_andreev
шлю Outlook Express система английская
вот
MSG1.TXT

Код: Return-Path: <info@test.domain.ru>
Received: from RADIONOVEA ([192.168.60.137])
by radionov-ea
with hMailServer ; Thu, 29 May 2008 17:57:01 +0400
Message-ID: <001701c8c193$de879580$893ca8c0@energodata.local>
From: "1" <info@test.domain.ru>
To: <info@test.domain.ru>
Subject:
Date: Thu, 29 May 2008 17:57:01 +0400
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_NextPart_000_0015_01C8C1B5.658F9890"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2900.2180
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180

This is a multi-part message in MIME format.

------=_NextPart_000_0015_01C8C1B5.658F9890
Content-Type: text/plain;
charset="koi8-r"
Content-Transfer-Encoding: base64


------=_NextPart_000_0015_01C8C1B5.658F9890
Content-Type: text/plain;
name="1.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="1.txt"

8PPx8ero6SDy5erx8g0KZW5nbGlzaCB0ZXh0

------=_NextPart_000_0015_01C8C1B5.658F9890--
Автор: igor_andreev
Дата сообщения: 29.05.2008 18:22

Цитата:
может дело в сервере поставил бесплатный hMailServer

Запросто, поковыряй там настройки. Вот (zip, ~1,5 Кб), попробуй

Код:
getmail -forceextract MSG1.TXT
Автор: 4aplin
Дата сообщения: 29.05.2008 18:51
Всем Здравствуйте! У меня небольшая проблема... Мне нужно написать батничек... Я в этом деле новичёк, так что если кто поможет, буду очень благодарен...

1 - копировал файлы *.usr из папки \\1\2\3 в C:\Temp\usr
2 - делал архив rar
3 - архив отправлял вложеным файлом в письме на *@yandex.ru с темой "привет"
Автор: igor_andreev
Дата сообщения: 29.05.2008 19:10
4aplin
1 - xcopy /?
2 - rar /?
3 - blat /?
Blat тут http://www.blat.net
Спрашивай, если что не получится.
Автор: 4aplin
Дата сообщения: 29.05.2008 19:12
igor, большое спасибо!

Добавлено:
igor... А как будет выглядеть листинг batника... Ещё раз извиняюсь...


Добавлено:
и при отправке файла через blat... происходит Error: Can't resolve hostname


Автор: JohnRD
Дата сообщения: 30.05.2008 09:17
igor_andreev

здравствуйте
Вы были правы проблема с почтовым клиентом моим Outlook Express

попробовал Вами присланный MSG - getmail -forceextract MSG1.TXT - все отлично
далее BLAT
blat -to info@test.domain.ru -server 192.168.60.137 -f webmaster@test.domain.ru -charset windows-1251 -subject "русский текст" -body "русский текст" -attach E:\install\GetMail\22\80020_616402001N_080401_6024.xml
тоже все отлично и XML и TXT и русский текст

интересно что же с Outlook Express, выставил в настройках plain text MIME64
отправляю вложение 1.txt с русским текстом, getmail выдергивает его но еще и
пустой Extract1.out

Код: Retrieving Message #1 (1047 bytes) into 'MSG1.TXT'...ok
Extracting MIME base64 encoded message to Extract1.out...
Undecoded length: 0...decoded length: 0...OK
Extracting MIME base64 encoded message to 1.txt...
Undecoded length: 36...decoded length: 27...OK
Автор: ferzc4
Дата сообщения: 30.05.2008 10:00
Здравствуйте, Уважаемые.

Существует папка обмена файлами пользователей. Адрес папки : \\server\home\%username%

В папке %username% существуют вложенные файлы и подпапки. Каждую пятницу эта папка очищается с помощью батника. Файлы все удаляются, а вот папки остаются, как бы сделать так, чтобы и папки тоже удалялись.

В папке %username% содержатся папки всех пользователей.

Спасибо.
Автор: king_stiven
Дата сообщения: 30.05.2008 12:37
ferzc4

Код: PushD \\server\home\%username%
if not errorlevel 1 RD /s /q .
PopD
Автор: Laureus
Дата сообщения: 30.05.2008 14:01
Есть проблемка: инет рвётся после 3-5 мин простоя (локальная домашняя сеть с выходом в инет). Провайдер предлагает её решить так http://wiki.rsspnet.ru/index.php/RTSL , но всё равно рвётся по прежнему. Всё перепробовал и обращаюсь к вам за помощью: надо написать батник, который отправлял бы например с одного моего пя на другой письмо через каждые 2 мин простоя (если это сложно , то просто через каждые 2 мин) и тем самым поддерживал бы инет в актуальном состоянии(не допускал бы разрыва свзязи) Может это слишком тупое и прямолинейное решение и к-т предложит лучшее, то буду только рад за помощь.
ДОП: Кстати , посылать письма это тупо: ящик разбухнет быстро. М.б просто к-т действие с использованием инета: прочитать на сайте что нибудь и тд
Автор: Cheerful_a_bear
Дата сообщения: 31.05.2008 14:36
4aplin

Цитата:
Всем Здравствуйте! У меня небольшая проблема... Мне нужно написать батничек... Я в этом деле новичёк, так что если кто поможет, буду очень благодарен...

1 - копировал файлы *.usr из папки \\1\2\3 в C:\Temp\usr
2 - делал архив rar
3 - архив отправлял вложеным файлом в письме на *@yandex.ru с темой "привет"



@echo off Привет
xcopy/v /y "\\1\2\3\*.usr" "c:\Temp\usr"
rar.exe a -r -m5 c:\Temp\usr.rar c:\Temp\usr\
sendfile.exe smtp.yandex.ru pupkin@yandex.ru c:\Temp\Архив.rar

Это с помошью программы sendfile.exe


Добавлено:
Laureus

Цитата:
и к-т предложит лучшее, то буду только рад за помощь.




А если просто пинг через определенный промежуток времени запускать с помощью батника...

Добавлено:
king_stiven

Цитата:
PushD \\server\home\%username%
if not errorlevel 1 RD /s /q .
PopD

Подскажите где почитать как работают эти команды?
Автор: KapralBel
Дата сообщения: 31.05.2008 15:13
Cheerful_a_bear

Цитата:
Подскажите где почитать как работают эти команды?

PushD /?
RD /?

В шапке Встроенный справочник по командам
Автор: z1riser
Дата сообщения: 31.05.2008 18:33
Решил написать свою удалялку мусора. Пособирал по форуму по чуть-чуть
написал...
Одна проблема, в одну из функций не передаются папки с пробелом...
тоесть например папка "All Users" передается в функцию просто как "All"

Хелп...

а вот и батничек..

[more]
if exist c: call :RSVI c
if exist d: call :RSVI d
if exist x: call :RSVI x
if exist y: call :RSVI y
if exist z: call :RSVI z


:RSVI
rem Clear Recycler & System Volume Information
if exist %~1:\RECYCLER rd /s /q %~1:\RECYCLER
if exist "%~1:\System Volume Information" (
echo Y|cacls "%~1:\System Volume Information" /T /P "Все":F /C
rd /s /q "%~1:\System Volume Information")




@set dircmd=/b

set folder=C:\Documents and Settings\

for /F "delims=." %%f in ('dir "%folder%"') do (
echo z1=============== "%%f" >> c:\deltemp.log
call :EXIST_SUB %%f
)


goto END

:EXIST_SUB
Echo "Сюда не передаются папки с пробелами"
echo "...search %folder%%~1" >> c:\deltemp.log
@if exist "%folder%%1\Local Settings\Temp" call :RM_SUB "%folder%%1\Local Settings\Temp" >nul
@if exist "%folder%%1\Local Settings\History" call :RM_SUB "%folder%%1\Local Settings\History" >nul
@if exist "%folder%%1\Local Settings\Temporary Internet Files" call :RM_SUB "%folder%%1\Local Settings\Temporary Internet Files" >nul
@if exist "%folder%%1\NetHood" call :RM_SUB "%folder%%1\NetHood" >nul
@if exist "%folder%%1\PrintHood" call :RM_SUB "%folder%%1\PrintHood" >nul
@if exist "%folder%%1\Recent" call :RM_SUB "%folder%%1\Recent" >nul
@if exist "%folder%%1\Cookies" call :RM_SUB "%folder%%1\Cookies" >nul


goto END

:RM_SUB

if "%~1" == "" (
echo Usage: DelFolder.cmd FolderName
pause
goto :end
)

for /F %%f in ('dir /A: "%~1"') do (

attrib -R -S -H "%~1\%%f" /D /S

)
echo "Deleting all files from %~1\"
echo "Deleting all files from %~1\" >> c:\deltemp.log

@del /f /s /q "%~1\*.*" >nul

@for /D %%d in ("%~1\*") do (
rem echo "z1:" %%d
attrib -R -S -H "%%d\*.*" /D /S
echo "Deleting folder %%d"
echo "Deleting folder %%d" >> c:\deltemp.log
rmdir /s /q "%%d" >nul
)

:END


@del /f /s /q %TMP%\ >nul
@del /f /s /q %TEMP%\ >nul
@for /F %%f in ('dir %TMP%\') do rd /q /s %TMP%\%%f >nul
@for /F %%f in ('dir %TEMP%\') do rd /q /s %TMP%\%%f >nul

[/more]
Автор: Elroir
Дата сообщения: 31.05.2008 20:08
z1riser
В строчке "call :EXIST_SUB %%f" поставь кавычки вокруг %%f.
В блоке :EXIST_SUB используй везде не %1, а %~1.
Автор: z1riser
Дата сообщения: 31.05.2008 20:31
спасибо, помогло, работает!!!
кому интересно - готовый скритп удаления всевозможного мусора всех пользователей

[more]
rem by z1[Riser]
rem ============================= updated 31.05.08 =================================================


if exist c: call :RSVI c
if exist d: call :RSVI d
if exist x: call :RSVI x
if exist y: call :RSVI y
if exist z: call :RSVI z

goto :main

:RSVI
rem Clear Recycler & System Volume Information
if exist %~1:\RECYCLER rd /s /q %~1:\RECYCLER
if exist "%~1:\System Volume Information" (
echo Y|cacls "%~1:\System Volume Information" /T /P "Все":F /C
rd /s /q "%~1:\System Volume Information")

goto END

:main

@set dircmd=/b

@del /f /s /q %TMP%\ >nul
@del /f /s /q %TEMP%\ >nul
@for /D %%f in ("%TMP%\*") do rd /q /s %%f >nul
@for /D %%f in ("%TEMP%\*") do rd /q /s %%f >nul

set folder=C:\Documents and Settings\

for /F "DELIMS=" %%f in ('dir "%folder%"') do (
echo ======================= "%%f" ======================== >> c:\deltemp.log
call :EXIST_SUB "%%f"
)

goto END

:EXIST_SUB
@if exist "%folder%%~1\Local Settings\Temp" call :RM_SUB "%folder%%~1\Local Settings\Temp" >nul
@if exist "%folder%%~1\Local Settings\History" call :RM_SUB "%folder%%~1\Local Settings\History" >nul
@if exist "%folder%%~1\Local Settings\Temporary Internet Files" call :RM_SUB "%folder%%~1\Local Settings\Temporary Internet Files" >nul
@if exist "%folder%%~1\NetHood" call :RM_SUB "%folder%%~1\NetHood" >nul
@if exist "%folder%%~1\PrintHood" call :RM_SUB "%folder%%~1\PrintHood" >nul
@if exist "%folder%%~1\Recent" call :RM_SUB "%folder%%~1\Recent" >nul
@if exist "%folder%%~1\Cookies" call :RM_SUB "%folder%%~1\Cookies" >nul


goto END

:RM_SUB

if "%~1" == "" (
echo Usage: DelFolder.cmd FolderName
pause
goto :end
)

for /F %%f in ('dir /A: "%~1"') do (

attrib -R -S -H "%~1\%%f" /D /S

)
echo "Deleting all files from %~1\"
echo "Deleting all files from %~1\" >> c:\deltemp.log

@del /f /s /q "%~1\*.*" >nul

@for /D %%d in ("%~1\*") do (
rem echo "z1:" %%d
attrib -R -S -H "%%d\*.*" /D /S
echo "Deleting folder %%d"
echo "Deleting folder %%d" >> c:\deltemp.log
rmdir /s /q "%%d" >nul
)

:END



[/more]
Автор: Laureus
Дата сообщения: 31.05.2008 22:19
Cheerful_a_bear

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

Ты читаешь мои мысли. тоже об этом подумал. Вот только самому мне батник не написать. Буду благодарен за такой батник. И как его запускать в автомате.
Автор: 4aplin
Дата сообщения: 31.05.2008 22:37
Cheerful_a_bear

Спасибо большое!

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

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


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