基于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脚本下载地址:见第一条评论

PowerShell+NetApi 批处理执行程序的更多相关文章

  1. 用PowerShell代替批处理吧!

    这篇文章主要介绍了用PowerShell代替批处理吧!本文讲解了批处理文件的历史.Windows NT 和 Cmd.exe.Windows Script 主机.进入 Windows PowerShel ...

  2. Drools文档(六) 用户手册

    用户手册 基础 无状态的知识Session Drools规则引擎拥有大量的用例和功能,我们要如何开始?你无须担心,这些复杂性是分层的,你可以用简单的用例来逐步入门. 无状态Session,无须使用推理 ...

  3. windows下如何批量修改文件名

    windows下如何批量修改文件名 一.总结 一句话总结:就是用excel生成了多条修改文件名的dos命令然后执行,比较核心的就是把图片名称导入excel 将图片名称导入excel---编写如下DOS ...

  4. AS2在FLASH中调用EXE文件方法详细说明 已测试可行

    熟悉FLASH功能的朋友都知道fscommand在FLASH中是一个经常用来控制窗口全屏或退出的命令,同时它也是FLASH调用外部可执行程序的一种方法,使用fscommand命令格式如下: fscom ...

  5. 用EXCEL批量更改文件名,一个命令就能完成

    工作任务:学籍库里需要更新和完善学生信息,其中有一项工作就是要导入以身份证号为文件名的学生照片,而目前各个班级提交的学生照片是以学生姓名命名的.如何将学生姓名批量转换成身份证号码呢? 解决方案:用EX ...

  6. Drools 7.4.1.Final参考手册(六) 用户手册

    用户手册 基础 无状态的知识Session Drools规则引擎拥有大量的用例和功能,我们要如何开始?你无须担心,这些复杂性是分层的,你可以用简单的用例来逐步入门. 无状态Session,无须使用推理 ...

  7. cmd批处理命令及powershell

    https://blog.csdn.net/wenzhongxiang/article/details/79256937 Powershell查询IP地址及主机名信息:1.foreach($ipv4  ...

  8. windows的cmd批处理命令及powershell (二)

    1.变量设置 for /l %%i in (1,1,100) do @echo %%i set /a i=500set /a i=%i%+200echo %i%pause ++++++++++++++ ...

  9. VBScript+SCR+NetApi+Accoreconsole 批处理dwg文件

    继上次powershell运行accoreconsole(https://www.cnblogs.com/NanShengBlogs/p/10981687.html)的研究之后又觉得不是很合适,毕竟p ...

随机推荐

  1. Spring MVC静态资源实例

    以下内容引用自http://wiki.jikexueyuan.com/project/spring/mvc-framework/spring-static-pages-example.html: 例子 ...

  2. 《javascript设计模式》读书笔记二(封装和隐藏信息)

    1.为什么要封装和信息隐藏 做过编程的朋友们知道"耦合"这个词.事实上封装的效果就是为了解耦,让类和类之间没有太多的联系,防止某一天改动某一类的时候,产生"多米骨诺牌效应 ...

  3. [React] PureComponent in React

    In this lesson, you will learn how to use PureComponent in React to reduce the number of times your ...

  4. Java第二次作业參考代码

    Java第二次作业參考代码 [程序11] 题目:有1.2.3.4四个数字,能组成多少个互不同样且无反复数字的三位数?都是多少? public class lianxi11 { public stati ...

  5. AsyncSocket中tag參数的用处

    tag參数是为了在回调方法中匹配发起调用的方法的,不会加在数据传输中. 调用write方法,等待接收消息.收到消息后,会回调didReadData的delegate方法, delegate方法中的ta ...

  6. Android常见UI组件之ListView(二)——定制ListView

    Android常见UI组件之ListView(二)--定制ListView 这一篇接上篇.展示ListView中选择多个项及实现筛选功能~ 1.在位于res/values目录下的strings.xml ...

  7. 竞赛中经常使用的C++写法

    首先是构造函数,重载 #include <iostream> #include <cstdio> #include <cstring> #include <s ...

  8. 针对OpenSSL吐嘈的吐嘈-如此唱反调

    前些天写了一篇<令人作呕的OpenSSL>,顿时引来了大量的恶评.令我非常尴尬,同一时候也认为悲哀. 假设说you can you up之类的,我认为起码这人看出了我的本意,仅仅是怀疑我的 ...

  9. 基于Cocos2dx + box2d 实现的愤慨的小鸟Demo

    1. Demo初始界面 2. 游戏界面 3. 精确碰撞检測 4. 下载  压缩文件文件夹 AngryBird source    愤慨的小鸟Demo源码,基于Cocos2dx C++,以及box2d技 ...

  10. [办公自动化]计算机突然断电,微软office文档(有asd文件)如何恢复?

    今天同事使用office软件时,突然故障.结果他忙了半天的word文档内容都找不见了. 经过查找,在其硬盘根目录找到了asd文档. 但是用当前版本的word和高版本的word软件都无法打开. 又查找了 ...