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


Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。与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脚本
 # 控制台程序路径
$key = Get-Item HKLM:\Software\Autodesk\Hardcopy
$arr = @()
foreach($value in $key.Property)
{
$arr += Get-Item HKLM:\Software\$value
} $arr = $arr | sort
for($i=0;$i -lt $arr.Count;$i++)
{
$_values = Get-ItemProperty $arr[$i].PSPath
$s = "{0}.{1}" -f ($i+1),$_values.ProductName
[Console]::WriteLine($s)
}
$n = Read-Host "请选择AutoCad版本" $_values = Get-ItemProperty $arr[[int]$n - 1].PSPath $MyConsole = $_values.Location + "\accoreconsole.exe" # 设置进程启动信息
$psi= New-Object System.Diagnostics.ProcessStartInfo $psi.FileName = "cmd.exe" # 设置进程自动重定向输入
$psi.UseShellExecute = $false
$psi.CreateNoWindow=$true
$psi.RedirectStandardInput = $true
$process = New-Object System.Diagnostics.Process
$process.StartInfo = $psi #获取当前ps1文件所在的文件夹 $ScriptPath=Split-Path -Parent $MyInvocation.MyCommand.Definition $dllFileName=$ScriptPath+"\ShopDrawing.dll" $files=[System.IO.Directory]::GetFiles($ScriptPath,"*.dwg") foreach ($item in $files)
{ [System.IO.FileInfo] $fi=New-Object System.IO.FileInfo($item)
if (!$fi.IsReadOnly){
$process.Start()
$process.StandardInput.WriteLine("""$MyConsole"" "+"/i"+" ""$item""")
$process.StandardInput.WriteLine("SECURELOAD")
$process.StandardInput.WriteLine("")
$process.StandardInput.WriteLine("netload")
$process.StandardInput.WriteLine("""$dllFileName""")
$process.StandardInput.WriteLine("FILEDIA")
$process.StandardInput.WriteLine("")
$process.StandardInput.WriteLine("mySSsetTest")
$process.StandardInput.WriteLine("Qsave")
$process.StandardInput.WriteLine("QUIT")
$process.StandardInput.WriteLine("EXIT")
#$process.Kill()
#$process.Close()
Write-Host ""“$item""批处理执行完成!"
}
else
{
Write-Host ""“$item""被占用或者处于只读状态,批处理执行失败!"
continue
} }


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

最新文章

  1. js事件流
  2. Java的日期工具类
  3. javascript中this指针
  4. Android应用开发-网络编程(二)(重制版)
  5. MMDrawerController 的使用
  6. 自我总结(六)---(学习j2ee+j2ee第一阶段项目)
  7. nodejs tools
  8. mac 用 brew
  9. MAC 环境下初始化mysql root 密码
  10. 《Linux命令行与shell脚本编程大全》 第二十七章 学习笔记
  11. 专注手机端前端界面开发的ui组件和js组合
  12. [USACO13OPEN]照片Photo
  13. spring cloud 入门系列二:使用Eureka 进行服务治理
  14. 使用curl上传图片的方法
  15. 在Docker中监控Java应用程序的5个方法
  16. OpenGL——二次曲面函数(球面-圆锥面-圆柱面)
  17. (13flask继续研究)自己动手,编写神经网络程序,解决Mnist问题,并网络化部署
  18. spring batch遇到的一些问题
  19. setInterval() 方法应用
  20. 20155308《网络对抗》Exp8 Web基础

热门文章

  1. [Bzoj4817] [Sdoi2017]树点涂色 (LCT神题)
  2. http 连接失败重连机制
  3. openwrt下载编译
  4. [Node.js] Read a File in Node.js with fs.readFile and fs.readFileSync
  5. 支付宝移动支付之IOSApp调用支付宝钱包
  6. 【安卓笔记】抽屉式布局----DrawerLayout
  7. Linux经常使用命令(更新中)
  8. Python常用的几种常用的内置函数
  9. 2 Angular 2 的核心概念
  10. 【iOS系列】-xib封装使用