Board logo

标题: [问题求助] [已解决]PowerShell如何根据是否存在指定文件并调用相应程序? [打印本页]

作者: awk    时间: 2013-6-30 18:52     标题: [已解决]PowerShell如何根据是否存在指定文件并调用相应程序?

本帖最后由 awk 于 2013-7-7 19:16 编辑

判断当前用户的%userprofile%目录(比如C:\Documents and Settings\用户名\)下面有没有.log日志文件。
如果有,执行C:\Program Files (x86)\下面的QQ.exe
如果没有,执行C:\Program Files (x86)\下面的CS.exe
作者: PowerShell    时间: 2013-6-30 19:42

$要测试的路径 = $env:USERPROFILE + '\.log'
if (test-path $要测试的路径)
{
  start-process  "C:\Program Files (x86)\QQ.exe"
}
else
{
  start-process  "C:\Program Files (x86)\cs.exe"
}

大致上是这样
作者: awk    时间: 2013-6-30 19:58

回复 2# PowerShell


    log文件名是不确定的,可能是a.log、b.log、c.log等
作者: PowerShell    时间: 2013-6-30 21:48

本帖最后由 PowerShell 于 2013-6-30 21:50 编辑

a.log、b.log、c.log等 ----------- 只有一个字符的,可以用通配符【?】    两个任意字符的可以用【??】   任意个字符的可以用通配符 【*】  这跟bat原理相同。

$要测试的路径 = $env:USERPROFILE + '\?.log'
即可

另外,问问题,要阐述清楚明白,最好一次说清。
作者: lxzzr    时间: 2013-6-30 23:26

test-path c:\*.log
作者: awk    时间: 2013-7-1 20:38

回复 4# PowerShell


我把这个代码保存为test.ps1
  1. $TEST_PATH = $env:USERPROFILE + '\*.log'
  2. if (test-path $TEST_PATH)
  3. {
  4.     start-process  "C:\Program Files (x86)\a.txt"
  5. }
  6. else
  7. {
  8.     start-process  "C:\Program Files (x86)\b.txt"
  9. }
复制代码
在cmd窗口里面执行test.ps1
发现记事本打开了test.ps1,而不是a.txt或者b.txt,如何解决?
作者: lxzzr    时间: 2013-7-1 21:40

回复 6# awk


    powershell -file c:\test.ps1
作者: awk    时间: 2013-7-7 18:35

回复 7# lxzzr


我安装这个方式执行的时候报错信息如下:
  1. File E:\Test\test.ps1 cannot be loaded because the execution of scripts is
  2. disabled on this system. Please see "get-help about_signing" for more details.
  3.     + CategoryInfo          : NotSpecified: (:) [], ParentContainsErrorRecordE
  4.    xception
  5.     + FullyQualifiedErrorId : RuntimeException
复制代码
请问如何解决?
作者: lxzzr    时间: 2013-7-7 18:56

回复 8# awk


    这个涉及到PS脚本的执行策略,你可以自行百度下。

以管理员运行PowerShell,输入:set-executionpolicy unrestricted,Y,确定
作者: awk    时间: 2013-7-7 19:16

回复 9# lxzzr


    可以了。多谢!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2