我正在使用与PowerShell的schtask命令。发生的问题是当它是C:\ Program Files \时它认为路径只是C:\ Program而路径的其余部分是争论。我试图通过使用字段的前后字符来逃避它,但确实有所不同。我怎么能做到这一点?我无法硬编码路径,因为它可以在用户安装时更改。
我在Windows 7 x64中创建了这个。它创建脚本返回的任务。但是,当我在任务计划中查看它时,任务的属性,然后是操作,并点击编辑。它将程序显示为C:\ Program,然后将其余部分显示为参数。
脚本:
$folder = Split-Path $MyInvocation.MyCommand.Path -Parent
$app = "\Demon.DatabasePurge.exe"
$exe = $app.Insert(0, $folder)
schtasks /create /tn "Demon Purge Job" /sc daily /st 00:00:00 /tr $exe
以下是我的尝试:
$folder = Split-Path $MyInvocation.MyCommand.Path -Parent
$app = "\Demon.DatabasePurge.exe`""
$exe = $app.Insert(0, $folder)
$exe2 = $exe.Insert(0, "`"")
schtasks /create /tn "Demon Purge Job" /sc daily /st 00:00:00 /tr $exe2
答案 0 :(得分:13)
我也遇到了这个问题..有这个问题的其他人的答案是包含单引号
/TR "'C:\Program Files (x86)\etc\test.exe'"
答案 1 :(得分:6)
我在Windows Server 2008 R2上遇到了同样的问题。虽然Microsoft support表示您应该能够用“我从来没有工作过,但单引号有效。”此外,带空格的参数也可以用单引号括起来:
schtasks /create /f /tn "Test" /tr "'c:\program files\test.bat' arg1 'arg 2 with spaces' arg3" /sc Daily /st 00:00
或构建要执行的字符串(并使用$ folder变量):
$createTask = "schtasks /create /f /tn `"Demon Purge Job`" /tr `"'$folder\Demon.DatabasePurge.exe' arg1 'arg 2 with spaces' arg3`"" /sc daily /st 00:00
Invoke-Expression $createTask
第一个示例生成以下任务操作屏幕:
答案 2 :(得分:0)
要变通解决此问题,请在反斜杠\
和引号"
字符组合(例如\"
)之间加上任务的路径部分(不包括参数或开关)。创建包含空格的路径或命令时,照常用双引号将任务的完整路径(包括自变量或开关)括起来。
代码:
schtasks /create /f /tn "Test" /tr "'c:\program files\test.bat' arg1 'arg 2 with spaces' arg3" /sc Daily /st 00:00
替换:
schtasks /create /f /tn "Test" /tr "\"c:\program files\test.bat\" arg1 'arg 2 with spaces' arg3" /sc Daily /st 00:00