Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] не работает скрипт

Ответить
Настройки темы
CMD/BAT - [решено] не работает скрипт

Аватара для rafka

Пользователь


Сообщения: 83
Благодарности: 2

Профиль | Отправить PM | Цитировать


Изменения
Автор: rafka
Дата: 14-05-2023
Здравствуйте ,
имеется вот такой код.
если убрать код после :sendmail все работает . а если убрать после :screencode опять таки все работает. То есть по отдельности все работает. а если объединит в одну бат то не работает.
Код: Выделить весь код
<# :
@echo off
Call :screencode
Call :sendmail
GoTo :EOF
:screencode
:: Create screen directory
IF EXIST "D:\screen" GoTo :ScreenShot
md D:\screen
:ScreenShot
    powershell /nop /ex bypass^
    "&{[ScriptBlock]::Create((gc '%~f0') -join [Char]10).Invoke()}"
  exit /b
#>
(New-Object -ComObject Shell.Application)
Add-Type -AssemblyName System.Windows.Forms
$scr = [Windows.Forms.SystemInformation]::VirtualScreen
$bmp = New-Object Drawing.Bitmap $scr.Width, $scr.Height
$gfx = [Drawing.Graphics]::FromImage($bmp)
$gfx.CopyFromScreen($scr.Location, [Drawing.Point]::Empty, $scr.Size)
$gfx.Dispose()
$bmp.Save("D:\screen\" + (date -u %d-%m-%Y-%H-%M-%S) + '.png'),
$bmp.Dispose()
GoTo :EOF

:sendmail
set "mailsender=D:\mailsender.exe"
set "smtpserver=mail.example.com"
set "smtpport=465"
set "smtpuser=vasya@example.com"
set "smtppwd=Password"
set "$_user1=user1@gmail.com"
set "$_user2=user2@gmail.com"
set "smtpsender=sender@example.com" 
set "subject=Screen"
set "body=Screenshot"
set "d=D:\screen"

for /f "tokens=2 delims==" %%a in ('set $_') do call :# "%%a"


:#
 pushd "%d%"
  for /f "delims=" %%a in ('2^>nul dir /a-d/b "*.png"') do (
   "%mailsender%" +cc +bc -q -user "%smtpuser%" -pass "%smtppwd%" -t "%~1" -f "%smtpsender%" -auth -smtp "%smtpserver%" -ssl -port "%smtpport%" -sub "%subject%" -M "%body%" -attach "%%a"
  )
 popd
exit /b
GoTo :EOF

Отправлено: 15:14, 14-05-2023

 

Старожил


Сообщения: 246
Благодарности: 49

Профиль | Отправить PM | Цитировать


похоже вы не все сторки скопировали оттуда откуда взяли это двойную химеру вот и перестало работать

повершелл комментарии должны быть воркуг каждого бат куска
подтвердите что нужна помощь или сами справились

вообще удивительно на какие ухищрения народ идет чтобы не изучать повершелл
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:21, 14-05-2023 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для rafka

Пользователь


Сообщения: 83
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Serguei Kouzmine:
подтвердите что нужна помощь или сами справились »
Емли вам не трудно, то помогите.

Отправлено: 20:34, 14-05-2023 | #3


Старожил


Сообщения: 246
Благодарности: 49

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
<# :
@echo off
REM origin: http://forum.oszone.net/thread-353571.html
call :screencode
call :sendmail
echo unsubst Z: drive
subst.exe Z: /d
goto :EOF
:screencode
echo subst Z: drive
echo subst.exe Z: %TEMP%
subst.exe Z: %TEMP%
echo Create screen directory
if NOT EXIST "Z:\screen" mkdir Z:\screen
echo Running %~f0 in Powershell
powershell.exe -noprofile -executionpolicy bypass "&{[ScriptBlock]::Create((get-content -literalpath '%~f0') -join [Char]10).Invoke()}"
exit /b
REM #>
add-type -assemblyname System.Windows.Forms
$s = [Windows.Forms.SystemInformation]::VirtualScreen
$b = new-object System.Drawing.Bitmap $s.Width, $s.Height
$g = [System.Drawing.Graphics]::FromImage($b)
$g.CopyFromScreen($s.Location, [System.Drawing.Point]::Empty, $s.Size)
$g.Dispose()
$f = ('Z:\screen\' + ( get-date  -uformat '%Y-%m-%d-%H-%M-%S' ) + '.png')
write-output $f
$b.Save($f)
$b.Dispose()
<# :
goto :EOF

:sendmail
set "SENDER=Z:\SENDER.exe"
echo sending email
echo "%SENDER%"
REM cmd loop trick
set "$_user1=user1@gmail.com"
set "$_user2=user2@gmail.com"

for /f "tokens=2 delims==" %%. in ('set $_') do call :cmd_env_loop "%%."

goto :EOF

:cmd_env_loop

if "%~1" equ "" goto :EOF
pushd Z:
echo sendng to "%~1"
popd
goto :EOF
REM
REM #>
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:51, 14-05-2023 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] не работает скрипт

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочее - Не работает скрипт mikrotik klesk Сетевое оборудование 0 28-09-2016 17:36
VBS/WSH/JS - Не корректно работает VBS-скрипт NoBrain Скриптовые языки администрирования Windows 3 11-02-2014 16:05
скрипт не работает на другом компьютере trudmoy AutoIt 2 19-02-2011 15:15
Не работает скрипт-рестартер в Win2003SP2 x64 Anitalink Microsoft Windows NT/2000/2003 9 26-06-2010 03:02
Не работает скрипт на Perl Rudy Вебмастеру 1 18-06-2004 19:22




 
Переход