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

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

Автор: Upek
Дата сообщения: 24.04.2009 23:42
Доброе время суток.

Как можно реализовать скрипт для отправки файлов находящихся в определенной папке созданных сегодня по e-mail.

Пытаюсь реализовать с помощью zerat и forfiles, приходит письмо без вложения.

forfiles -p%~dp0 -m*.rar -d+0 -c"CMD /c zerat smtphost:адрес user:имя pass:пасс auth:login from:"имя" to:"имя" subject:"Hello, %%ToFullName" type:multipart/mixed $boun "Content-Type: text/plain; charset=windows-1250" Получи %%ToName,\n\nРезервную копию $incl @FILE"


Автор: romrub
Дата сообщения: 25.04.2009 12:30
попробуй так:

for %%I in (%~dp0*.*) do call :CheckToday %%I
goto :EOF

:CheckToday
set DATEFILE=%~t1
if "%DATEFILE:~0,10%"=="%DATE%" cmd /c zerat или т.п.
goto :EOF
Автор: Upek
Дата сообщения: 25.04.2009 15:21

Ну поиск файла проходит, а вот как найденный файл прикрепить к письму?
Автор: romrub
Дата сообщения: 25.04.2009 15:34
не знаю, что такое zerat, но если он умеет прикреплять файлы по имени, то полное имя файла с путем - в параметре %1, т.е. вызывать надо cmd /c zerat %1 (ну или как там по синтаксису).

Автор: Cosmogor
Дата сообщения: 25.04.2009 18:29
Добрый день.

Вопрос экспертам:
Интересно, какая переменная у папки (system32)
а то приходится вот так писать:
%SystemRoot%\system32\, или у неё нет переменной?
В справке Windows я не нашёл, в принцепе и для папки (Program Files)
тоже не нашёл переменной, хотя вот эта (%ProgramFiles%) работает хорошо.


Спс.
Автор: 01MDM
Дата сообщения: 25.04.2009 18:31
Cosmogor
Посмотри все переменные командой SET
Автор: Cosmogor
Дата сообщения: 25.04.2009 20:42
01MDM

Из команды: SET P /?
Ничего не понял, на одной переменной PATH сразу несколько папок.
01MDM , разьясни новичку в этом деле.
Автор: El Sanchez
Дата сообщения: 25.04.2009 21:55
Cosmogor

Переменная представляет собой список полных путей каталогов, разделенных символом точки с запятой, в которых система ищет исполняемый файл при его запуске. Это значит , что для запуска из командной строки, например, утилиты ping.exe не нужно будет прописывать в комстроке к ней полный путь - каталог System32, в котором находится ping.exe прописан в Path.
Автор: Elroir
Дата сообщения: 26.04.2009 00:34
Cosmogor
Список переменных
Автор: XXXXL
Дата сообщения: 26.04.2009 11:48
Здравствуйте!
Когда-то довно зарегистрировал кучу номерков icq в формате пароль;номер символ ";" разделяет пароль от номера. Теперь понадобилось пропустить их через одну программу которая понимает формат номер;пароль, получаеться мне необходимо поменять местами, всё что до символа с тем что после, вручную это сделать не реально, там пару тысяч записей, поэтому обращаюсь к вам за помощью решить проблему.
Спасибо!
Автор: romrub
Дата сообщения: 26.04.2009 12:18
в текстовом редакторе FarManager-а есть замечательные вертикальные блоки, которые помогут ..
Автор: Rush
Дата сообщения: 26.04.2009 12:21
XXXXL
Так, наверное, если у тебя там в строке только пароль и номер.

cmd /c for /f "delims=; tokens=1-2" %a in (infile) do (@echo %b;%a >> outfile)

Хотя я в этом деле дилетант.
Автор: XXXXL
Дата сообщения: 26.04.2009 13:36

Цитата:
в текстовом редакторе FarManager-а есть замечательные вертикальные блоки

Крутил я этот редактор долго и так не разобрался как им пользоваться



Цитата:
cmd /c for /f "delims=; tokens=1-2" %a in (infile) do (@echo %b;%a >> outfile)

Выдаёт:
непредвиденное появление: b.
Автор: Rush
Дата сообщения: 26.04.2009 13:50
XXXXL
А файл-то хоть как выглядит? Ты бы образец выложил (настоящий не обязательно)

Цитата:
Выдаёт:
непредвиденное появление: b.

Я себе в качестве теста сделал файл вида
Код: 1;2
3;4
5;6
7;8
Автор: XXXXL
Дата сообщения: 26.04.2009 14:48

Цитата:
Ты, наверное, в батник засовываешь команду. Я-то написал для запуска из комстроки...

Да, точьно... извини за невнимательность.
Большое спасибо всё работает.
Автор: Upek
Дата сообщения: 26.04.2009 16:08
romrub
romrub
Upek
Автор: romrub
Дата сообщения: 26.04.2009 19:12
на будущее по Far-у ..
встаешь в левый верхний угол нужного вертикального блока
нажимаешь Alt,
удерживая ег, стрелками вправо-вниз идешь в правый нижний угол
отпускаешь Alt
Shift-Del
встаешь в новую позицию, где будет располагаться левый верхний угол
Shift-Ins

уф, объяснять дольше

попробуй с Alt, сам быстрее разберешься

P.S.
сложность решения должно быть адекватна сложности задаче ...
Автор: Cosmogor
Дата сообщения: 26.04.2009 19:43
Добрый вечер.

Elroir
Спс. за переменные.

Есть вопрос по реестру. Как скопировать из реестра только один строковый параметр в файл *.reg.
Вот код:

REG EXPORT HKEY_LOCAL_MACHINE\RASDEL 1.reg

Ещё код:

regedit /ea 1.reg HKEY_LOCAL_MACHINE\RASDEL

Эти два кода сохраняют весь раздел вместе с параметрами, а мне нужно только один параметр.

Спс.
Автор: Maza_Faka
Дата сообщения: 27.04.2009 08:47
Cosmogor

Цитата:
Как скопировать из реестра только один строковый параметр

Пример:

Код:
@Echo Off

Set KEY=HKEY_LOCAL_MACHINE\Software\MyProgram
Set VALUE=MyValue

Reg Export %KEY% C:\1.reg
Echo REGEDIT4>myreg.reg
Echo.>>myreg.reg
Echo [%KEY%]>>myreg.reg
More +1 1.reg | Find /I "%VALUE%">>myreg.reg
Echo.>>myreg.reg
Автор: Cosmogor
Дата сообщения: 27.04.2009 19:42
Maza_Faka

Действительно копирует только один параметр, а не весь раздел.
Спс. за инфу
Автор: Cosmogor
Дата сообщения: 28.04.2009 17:43
Доброго времени суток.

Можно ли сделать поиск файла в корне диска, по имеющимся дискам в системе?

Пример кода:

IF EXIST "C:\1.txt" GOTO COPY
IF NOT EXIST "C:\1.txt" GOTO NEXT
EXIT

Если есть, то GOTO COPY
Если нет файла, то переход к следующему диску.
В приведённом примере приходится подставлять букву диска, это же
получается длинный список дисков, 26 букв!

Как сделать попроще?

Спс.
Автор: maxi812
Дата сообщения: 28.04.2009 18:01
как сделать батник для флешки автозапуска что бы устанавливал постоянную букву диска (флешки) ?
Автор: romrub
Дата сообщения: 28.04.2009 20:37

Цитата:
Можно ли сделать поиск файла в корне диска, по имеющимся дискам в системе?

Пример кода:

IF EXIST "C:\1.txt" GOTO COPY
IF NOT EXIST "C:\1.txt" GOTO NEXT
EXIT

Если есть, то GOTO COPY
Если нет файла, то переход к следующему диску.


как вот так:

FOR %%I IN (C D E F G H) DO (IF EXIST "%%I:\1.TXT" GOTO COPY)

список нужных дисков указываешь через пробел
Автор: Cosmogor
Дата сообщения: 29.04.2009 18:59
romrub

Как подставить переменную к (msg *) ,чтоб было видно на каком диске-то
был найден файл?

Код:

FOR %%I IN (C D E F G H K) DO (IF EXIST "%%I:\1.txt" GOTO START)
FOR %%I IN (C D E F G H K) DO (IF NOT EXIST "%%I:\1.txt" GOTO NO)
:START
Chcp 1251
msg * Есть файл на диске
EXIT
:NO
Chcp 1251
msg * Нет файла.
EXIT

Или может я чего то не допонимаю?
Помогите.

Спс.
Автор: 01MDM
Дата сообщения: 29.04.2009 20:42
Cosmogor


Код:
@echo off
chcp 1251 1>nul

for %%i in (a,b,c,.......,z) do (

if exist "%%i:\1.txt" (
msg * Есть файл на диске %%i:
) else (
msg * Нет файла на диске %%i:
)
)
Автор: Cosmogor
Дата сообщения: 29.04.2009 21:50
01MDM

Спс. скрипт работает нормально.

Есть ещё вопрос, а нельзя сделать так что-бы скрипт вышел на
GOTO, после нахождения файла(без перечислений дисков)
для дальнейших операции с файлом?
Автор: timka85
Дата сообщения: 29.04.2009 22:07
Привет форумчане!
Задача такая:
Есть папка с постоянно циркулируемыми файлами... Нужна в этой папке серия батников (для начала 3), и у каждого из них должна быть функция запуска файла из этой папки по алфавитному приоритету имени. Может я не совсем правильно выразился, но другими словами, не важно какие имена будут у файлов, батник, скажем Приоритет#2.bat, должен запустить мне файл, который идет по имени вторым в списке.
Автор: romrub
Дата сообщения: 30.04.2009 01:40

Цитата:
Как подставить переменную к (msg *) ,чтоб было видно на каком диске-то
был найден файл?


Цитата:
Есть ещё вопрос, а нельзя сделать так что-бы скрипт вышел на
GOTO, после нахождения файла(без перечислений дисков)
для дальнейших операции с файлом?


не стесняйтесь , публикуйте условия задачи сразу - решение будет быстрее

замените

Код: FOR %%I IN (C D E F G H K) DO (IF EXIST "%%I:\1.txt" GOTO START)
Автор: Cosmogor
Дата сообщения: 30.04.2009 08:53
romrub

Вот собрал наконец батник с помощью форума.
Суть самого батника такая:

1) Поиск файла по имеющимся дискам(в корне диска),
2) Первый найденный файл копируется (дальше поиск прерывается),
3) И если файл не найден ни на одном диске, то EXIT.

Код:

FOR %%I IN (C D E F G H K) DO (IF EXIST "%%I:\1.txt" call:YES %%I)
FOR %%I IN (C D E F G H K) DO (IF NOT EXIST "%%I:\1.txt" call:NO %%I)

:YES
REM msg * YES %1

GOTO COPY
EXIT

:NO
msg * NO.
EXIT

:COPY
echo Y|COPY "%1:\1.txt" "1.txt"
msg * YES COPY %1
EXIT

Батник хорошо работает, но что-то мне в нём не нравится.
А что ни как не пойму.

Вот на обсуждение форуму.

Спс.

Автор: Maza_Faka
Дата сообщения: 30.04.2009 09:12
Cosmogor
Пример:

Код:
@Echo Off

FOR %%I IN (C D E F G H K) DO IF EXIST "%%I:\1.txt" (COPY /Y "%%I:\1.txt" "D:\1.txt") && (GoTo :EOF)

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: SAS.Планета (часть 2)


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