因此,我学习了如何从kotlin here运行ps1文件,但我对该文件的唯一目的是运行命令,然后删除它自己。有没有办法消除创建一个稍后将被删除的文件的麻烦?
我有一个单行的命令字符串,每个命令用分号分隔。
编辑
有些人索要powershell代码,如下所示:
(我把它分成几行,但实际上只有一行)
前面没有反斜杠的美元符号是对kotlin中变量的引用。
"\$ComObj = New-Object -ComObject WScript.Shell; " +
"\$ShortCut = \$ComObj.CreateShortcut(\"\$Env:${shortcut.absolutePath}\"); " +
"\$ShortCut.TargetPath = \"%windir%\\system32\\cmd.exe\"; " +
"\$ShortCut.Description = \"${f.nameWithoutExtension}\"; " +
"\$ShortCut.Arguments = \"/c \"\"start $url\"\"\"; " +
"\$ShortCut.FullName; \$ShortCut.WindowStyle = 7; " +
"\$ShortCut.IconLocation = \"$iconpath\"; " +
"\$ShortCut.Save(); " +
"Remove-Item \"${createPs.absolutePath}\"; "
(代码在运行之前被写入文件,这是我不想要的)
发布于 2018-10-18 06:30:17
如果您可以将脚本放在一个变量中,并且该变量将在调用PowerShell时展开,则可以这样做
Runtime.getRuntime().exec("powershell.exe -command '\$yourvariable'")
当然,您需要尝试使用正确的转义字符来获得要运行的命令周围的引号。
我在这方面取得了最大的成功,首先在CMD.exe中运行它,并找出了正确的语法。然后把它带到你的程序中。这样,您就会知道您首先正确地理解了PowerShell语法。据我所知,PowerShell的解析都是在引擎启动后完成的。因此,当您以这种方式调用PowerShell时,您必须获得正确的语法。
https://stackoverflow.com/questions/52863725
复制相似问题