基于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 Boot项目错误:Error parsing lifecycle processing instructions

    pom.xml文件错误:Error parsing lifecycle processing instructions 解决方法:清空.m2/repository下的所有依赖文件,重新下载即可解决该问 ...

  2. 关键字检索高亮标出-javasript/jQuery代码实现

    原文:http://www.open-open.com/code/view/1454504432089 此方法传入2个参数,一个是被检索内容所在的表单或者HTML元素的ID,另一为关键字,多个关键字的 ...

  3. Go --- 设计模式(工厂模式)

    简易工厂主要是用来解决对象“创建”的问题.以下的例子取自<大话设计模式>中第一章,实现一个可扩展的“计算器”.当增加新的功能时,并不需改动原来已经实现的算法.由于是简易工厂,所以我们还是需 ...

  4. 如何用grep命令同时显示“匹配行”上下的n行?

    如何用grep命令同时显示匹配行上下的n行   标准unix/linux下的grep通过以下参数控制上下文 grep -C 5 foo file 显示file文件中匹配foo字串那行以及上下5行gre ...

  5. enumerateObjectsUsingBlock 、for 、for(... in ...) 的差别 &amp; 性能測试

    for VS for(... in ...) for 的应用范围广基本能够NSArray.NSArray以及C语言的数组等,而for(... in ...)仅限于NSArray.NSArray等 fo ...

  6. 将Python打印的内容进行高亮的输出

    将打印的内容进行高亮的显示 内容: 格式: echo "\033[字背景颜色;字体颜色m字符串\033[0m" 例如: "\033[41;36m something he ...

  7. sql里的in对应linq的写法 及 IQueryable转化为Dictionary

    string[] arID = { "0001", "0002" }; var dict = this.service.GetMyList(m => ar ...

  8. 转载 Url编码

    http://www.cnblogs.com/artwl/archive/2012/03/07/2382848.html 混乱的URI编码 JavaScript中编码有三种方法:escape.enco ...

  9. 2015/12/25 ① 图灵测试 ② 安装jdk出现的问题 ③ 配置环境变量

    ①图灵测试 1,解释 图灵测试一词来源于计算机科学和密码学的先驱阿兰·麦席森·图灵写于1950年的一篇论文<计算机器与智能>.阿兰·麦席森·图灵1950年设计出这个测试,其内容是,如果电脑 ...

  10. 内存充足,但是为什么hadoop3无法启动nodemanager

    [root@hadoop3 hadoop]# xloStarting namenodes on [hadoop3]上一次登录:三 12月 27 16:06:01 CST 2017pts/24 上Sta ...