首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell:停止解析参数在Braces中无效

Powershell:停止解析参数在Braces中无效
EN

Stack Overflow用户
提问于 2021-08-25 18:52:41
回答 1查看 65关注 0票数 2

我需要检查文件是否在XX分钟内未被修改,如果条件为真,则关闭文件锁定的PID。只有在powershell中才能确定文件是否在XX分钟内被修改过,但我发现终止相关PID锁定的唯一方法是使用handle命令。所以,我只能用1/2批和1/2 powershell来完成我想要的。

我让它作为一个独立的命令来杀死PID,但一旦我把它放在括号内,Powershell不喜欢它。看起来可能不像把停止解析的参数。代码在下面。在脚本的前面计算$inactive变量。那部分没问题。不喜欢使用大括号的是cmd批处理代码。

代码语言:javascript
复制
if ($inactive -eq 'True') {cmd --% /C for /f "tokens=3,6 skip=5 delims=: " %i in ('handle.exe -accepteula file.csv') do taskkill /t /f /PID %i}

如果我只是在powershell中单独运行cmd行,但没有{},它可以正常工作,但我需要首先对$inactive变量进行计算,以确定是否需要运行该命令

工作很好..。

代码语言:javascript
复制
cmd --% /C for /f "tokens=3,6 skip=5 delims=: " %i in ('handle.exe -accepteula file.csv') do taskkill /t /f /PID %i

不管用..。

代码语言:javascript
复制
if ($inactive -eq 'True') {cmd --% /C for /f "tokens=3,6 skip=5 delims=: " %i in ('handle.exe -accepteula file.csv') do taskkill /t /f /PID %i}

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-25 19:05:48

如果将结束的}放在同一行上,则不能将其识别为块的结束分隔符(它被视为--%后面未解析的命令行的一部分,即停止解析符号)。

}放在下一行以修复问题:

代码语言:javascript
复制
if ($inactive -eq 'True') {
  cmd --% /C for /f "tokens=3,6 skip=5 delims=: " %i in ('handle.exe -accepteula file.csv') do taskkill /t /f /PID %i
}

有关--%的更多信息,包括其局限性和缺陷,请参见这个答案

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68928425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档