找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28591|回复: 9

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

[复制链接]
发表于 2013-6-30 18:52:47 | 显示全部楼层 |阅读模式
本帖最后由 awk 于 2013-7-7 19:16 编辑

判断当前用户的%userprofile%目录(比如C:\Documents and Settings\用户名\)下面有没有.log日志文件。
如果有,执行C:\Program Files (x86)\下面的QQ.exe
如果没有,执行C:\Program Files (x86)\下面的CS.exe

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2013-6-30 19:42:38 | 显示全部楼层
$要测试的路径 = $env:USERPROFILE + '\.log'
if (test-path $要测试的路径)
{
  start-process  "C:\Program Files (x86)\QQ.exe"
}
else
{
  start-process  "C:\Program Files (x86)\cs.exe"
}

大致上是这样

评分

参与人数 1技术 +1 收起 理由
awk + 1 乐于助人

查看全部评分

 楼主| 发表于 2013-6-30 19:58:26 | 显示全部楼层
回复 2# PowerShell


    log文件名是不确定的,可能是a.log、b.log、c.log等
发表于 2013-6-30 21:48:29 | 显示全部楼层
本帖最后由 PowerShell 于 2013-6-30 21:50 编辑

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

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

另外,问问题,要阐述清楚明白,最好一次说清。
发表于 2013-6-30 23:26:43 | 显示全部楼层
test-path c:\*.log
 楼主| 发表于 2013-7-1 20:38:14 | 显示全部楼层
回复 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,如何解决?
发表于 2013-7-1 21:40:14 | 显示全部楼层
回复 6# awk


    powershell -file c:\test.ps1
 楼主| 发表于 2013-7-7 18:35:49 | 显示全部楼层
回复 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
复制代码
请问如何解决?
发表于 2013-7-7 18:56:22 | 显示全部楼层
回复 8# awk


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

以管理员运行PowerShell,输入:set-executionpolicy unrestricted,Y,确定

评分

参与人数 1技术 +1 收起 理由
awk + 1 乐于助人

查看全部评分

 楼主| 发表于 2013-7-7 19:16:37 | 显示全部楼层
回复 9# lxzzr


    可以了。多谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 02:09 , Processed in 0.022234 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表