CMD/BAT - [решено] не работает скрипт

Ответить
Аватара пользователя
rafka

CMD/BAT - [решено] не работает скрипт

Сообщение rafka »

Здравствуйте ,

имеется вот такой код.

если убрать код после :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
Аватара пользователя
Serguei Kouzmine

Re: CMD/BAT - [решено] не работает скрипт

Сообщение Serguei Kouzmine »

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



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

подтвердите что нужна помощь или сами справились



вообще удивительно на какие ухищрения народ идет чтобы не изучать повершелл
Аватара пользователя
rafka

Re: CMD/BAT - [решено] не работает скрипт

Сообщение rafka »

Цитата Serguei Kouzmine:



подтвердите что нужна помощь или сами справились
CMD/BAT - [решено] не работает скрипт




Емли вам не трудно, то помогите.
Аватара пользователя
Serguei Kouzmine

Re: CMD/BAT - [решено] не работает скрипт

Сообщение Serguei Kouzmine »

Код: Выделить всё

<# :
@echo off
REM origin: viewtopic.php?t=254090
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 #>
Ответить

Вернуться в «Скриптовые языки администрирования Windows»