我想使用批处理文件执行 powershell 代码,以从我的桌面截取屏幕截图,我在这里找到它Take a Screenshot of a User's Desktop with PowerShell。
因此,当我将它作为 powershell 脚本执行时,它可以正常工作并且对我 5/5 有效,但是当我将它作为这样的批处理文件时,我遇到了这种类型的错误,我不知道如何正确调试它?
Error "TerminatorExpectedAtEndOfString"
那么,如果有人可以解释我为什么以及这个错误来自哪里?
这是我的批处理代码:
@echo off
Title Get a ScreenShot with Batch and Powershell
Call :ScreenShot
pause
::----------------------------------------------------------------------------------------------------------------------------
:ScreenShot
Powershell ^
$Path = "E:\ScreenCapture\";^
Add-Type -AssemblyName System.Windows.Forms;^
$screen = [System.Windows.Forms.Screen]::PrimaryScreen.Bounds;^
$image = New-Object System.Drawing.Bitmap($screen.Width, $screen.Height);^
$graphic = [System.Drawing.Graphics]::FromImage($image);^
$point = New-Object System.Drawing.Point(0,0);^
$graphic.CopyFromScreen($point, $point, $image.Size);^
$cursorBounds = New-Object System.Drawing.Rectangle([System.Windows.Forms.Cursor]::Position,[System.Windows.Forms.Cursor]::Current.Size);^
[System.Windows.Forms.Cursors]::Default.Draw($graphic, $cursorBounds);^
$FileName = (Get-Date -F dd-MM-yyyy_HH_mm_ss)+".jpg";^
$FilePath = $Path$FileName;^
$FormatJPEG = [System.Drawing.Imaging.ImageFormat]::jpeg;^
$image.Save($FilePath,$FormatJPEG)
Exit /B
::------------------------------------------------------------------------------------------------------------------------
错误来自这一行:
您不应该连接变量以形成这样的文件路径。如果你用这样的双引号将它括起来,
它会
$FilePath = "$Path$FileName";^
起作用:但是,远更好的是使用Join-Path cmdlet:或者如果您更愿意直接使用 .Net:
可能你需要:
用于
^
_)
替换
"
为'
_$var='value'
在中使用 To.String
$((Get-Date).ToString('dd-MM-yyyy_HH_mm_ss')+'.jpg')
在命令行中测试它:
在你的 bat 文件中测试它: