博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PowerShell+NetApi 批处理执行程序
阅读量:5305 次
发布时间:2019-06-14

本文共 2603 字,大约阅读时间需要 8 分钟。

基于CMD 编写批处理程序很反人类,此篇文章介绍利用Power Shell脚本(借鉴明经net版主雪山飞狐的脚本改造而成)处理之前的Bat+scr的过程()


Windows PowerShell 是一种命令行和脚本环境,使命令行用户和者可以利用 的强大功能。与com对象无缝对接,可随时条用

1# 条用com对象

COM就像没落的贵族一样,虽然过气,但那个范儿还在。作为遗产,它们还在放光发热。PowerShell没有嫌弃它,而是选择与他们兼容。这也让现在依旧战斗在Native C++的程序员颇为欣慰。PowerShell对COM的访问方式是通过其ProgID来进行。示例如下:

$ie = New-Object -ComObject Excel.Application

$ie.Visible = $true

2# 条用dotnet framework对象

Add-Type
-AssemblyName
mscorlib
$str
New-Object
System.Text.StringBuilder
$str
.Append(
"Hello"
)
$str
.ToString()
3# 改造之前的bat+scr 合并为Powershell脚本
1 # 控制台程序路径 2 $key = Get-Item HKLM:\Software\Autodesk\Hardcopy 3 $arr = @() 4 foreach($value in $key.Property) 5 { 6     $arr += Get-Item HKLM:\Software\$value 7 } 8  9 $arr = $arr | sort10 for($i=0;$i -lt $arr.Count;$i++)11 {12     $_values = Get-ItemProperty $arr[$i].PSPath13     $s = "{0}.{1}" -f ($i+1),$_values.ProductName14     [Console]::WriteLine($s)15 }16 $n = Read-Host "请选择AutoCad版本"17 18 19 $_values = Get-ItemProperty $arr[[int]$n - 1].PSPath20 21 22 $MyConsole = $_values.Location + "\accoreconsole.exe"23 24 # 设置进程启动信息25 $psi= New-Object System.Diagnostics.ProcessStartInfo26 27 $psi.FileName = "cmd.exe"28 29 # 设置进程自动重定向输入30 $psi.UseShellExecute = $false31 $psi.CreateNoWindow=$true32 $psi.RedirectStandardInput = $true33 $process = New-Object System.Diagnostics.Process34 $process.StartInfo = $psi35 36 #获取当前ps1文件所在的文件夹37 38 $ScriptPath=Split-Path -Parent $MyInvocation.MyCommand.Definition39 40 41 $dllFileName=$ScriptPath+"\ShopDrawing.dll"42 43 $files=[System.IO.Directory]::GetFiles($ScriptPath,"*.dwg")44 45 foreach ($item in $files)46 {47     48     [System.IO.FileInfo] $fi=New-Object System.IO.FileInfo($item)49     if (!$fi.IsReadOnly){50      $process.Start()51      $process.StandardInput.WriteLine("""$MyConsole"" "+"/i"+" ""$item""")    52      $process.StandardInput.WriteLine("SECURELOAD")53      $process.StandardInput.WriteLine("0")54      $process.StandardInput.WriteLine("netload")55      $process.StandardInput.WriteLine("""$dllFileName""")56      $process.StandardInput.WriteLine("FILEDIA")57      $process.StandardInput.WriteLine("1")58      $process.StandardInput.WriteLine("mySSsetTest")59      $process.StandardInput.WriteLine("Qsave")60      $process.StandardInput.WriteLine("QUIT")61      $process.StandardInput.WriteLine("EXIT")62      #$process.Kill()63      #$process.Close()64      Write-Host ""“$item""批处理执行完成!" 65     }66     else67     {68         Write-Host ""“$item""被占用或者处于只读状态,批处理执行失败!" 69         continue70     }71     72 }
View Code


 PowerShell脚本下载地址:见第一条评论

 

转载于:https://www.cnblogs.com/NanShengBlogs/p/10981687.html

你可能感兴趣的文章
Hibernate操作和保存方式
查看>>
Spring boot热部署配置[转]
查看>>
模拟实现select组件功能
查看>>
阅读任务-阅读提问
查看>>
浅谈JavaScript中闭包
查看>>
NativeXml (7):添加属性
查看>>
electron-api
查看>>
android自定义圆角实线边框,圆角虚线边框,直实线,虚实线,半圆角边框
查看>>
《随机出题软件》&《随机分队软件》源码(Windows API)
查看>>
日记造词——有世无解
查看>>
nohup 同时实现记录日志和屏幕输出
查看>>
web和winform的MD5加密
查看>>
理解inode以及软硬连接,和inode磁盘爆满的解决方案以及文件权限
查看>>
P5021 赛道修建 (NOIP2018)
查看>>
cudpp库的编译和使用
查看>>
命令行web客户端与HTTP REST API调试工具
查看>>
【学习】js学习笔记---字符串对象
查看>>
MySQL Workbench: mysqldump version mismatch
查看>>
[Lintcode]74. First Bad Version/[Leetcode]278. First Bad Version
查看>>
windows 里面waveOut*接口应用
查看>>