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

[文本处理] 在批处理中调用 powershell 发现速度很慢,在找问题原因。

[复制链接]
发表于 2018-10-29 20:55:50 | 显示全部楼层 |阅读模式
本帖最后由 xczxczxcz 于 2018-10-29 20:56 编辑

如下面这条 查找 与 00.bat 同目录下的 00.txt 的哈希值。

  1. for /f "tokens=2 delims=: " %%e in ('powershell "get-filehash '00.txt' -Algorithm SHA1|FL"^|findstr /i "Hash"') do echo %%e
复制代码
====================
若用 certutil 命令很快。同样在处理网页内容时,用批命令处理虽繁琐点,但速度快。POWERSHELL 可以过滤,转码,文档截取等可以用管道一行命令处理完,但速度不快。偶现在一直找不到提速的方法。
求加速方法? 批和PS 混编。
发表于 2018-10-29 21:21:16 | 显示全部楼层
用的哪个版本?升级到5.x有效果没
 楼主| 发表于 2018-10-29 21:44:34 | 显示全部楼层
回复 2# Batcher


    Windows 10 17134 最新版 PS 5.1.17134.228
  1. $psversiontable
复制代码
老大,分析一下。
 楼主| 发表于 2018-10-29 21:48:02 | 显示全部楼层
单纯用PS速度也不错,但比 纯P 还是慢那点。
发表于 2018-10-29 22:18:23 | 显示全部楼层
本帖最后由 yhcfsr 于 2018-10-29 22:24 编辑

这个没办法,CMD加载POWERSHELL命令时需要时间,我的体验是平均1-1.5S左右
可以BAT调用PS脚本这种双文件方式.
如果非要单文件BAT,可以将PS脚本的命令全部放到BAT里面,不过要做些改变.有点烦琐
 楼主| 发表于 2018-10-29 22:50:28 | 显示全部楼层
回复 5# yhcfsr

是的。偿试 把PS 单独写一行。会快那么一点点。
如果把 PS的所有脚本内容搬到 批中。真的很麻烦。至少现在偶感觉麻烦。那个 $ 感觉不好处理。

调用 PS外部脚本,还没试它的结果能不能正确返回 批中。当然可以采用输出到文本的方式。不过这样就多了时间差的问题。如PS脚本还没完,批已运行到末行。还没试,纯假设。

2600个网页截取内容转码过滤,开始用了47分钟。太慢。经过两3天的 help 各种参数。现在也可以在20分钟内处理完。但纯P只要5-6分钟。
ps cmdlet 太多,真的不好找出最佳命令。
   
目前还不好完全脱离 批命令.
发表于 2018-10-30 12:43:21 | 显示全部楼层
回复 6# xczxczxcz


    如果需要在bat的for或goto循环内部频繁调用powershell,那确实比较影响性能。
发表于 2018-10-30 18:32:02 | 显示全部楼层
回复 6# xczxczxcz


    POWERSHELL转BAT确实有多此一举的感觉.
小文件处理BAT有一定优势.
大数据处理,BAT是无论如何也比不上POWERSHELL的
POWERSHELL的编程有一定技巧,很小的改动,效率可能天壤之别.
多用.NET的命令,尝试用多线程处理任务.
 楼主| 发表于 2018-10-31 09:53:20 | 显示全部楼层
回复 8# yhcfsr

昨天用纯PS写了个,处理550个网页,3-4秒全部搞定。速度很快。
 楼主| 发表于 2018-10-31 09:57:11 | 显示全部楼层
回复 7# Batcher


    老大,PS 中如何输入一个或多个空行。这个我真的不知道。网络上都是一些去空行的。类似批处理中的 echo;>xxx的功能。
发表于 2018-10-31 11:53:45 | 显示全部楼层
回复 10# xczxczxcz


是这个意思吗?
  1. "bathome" | Out-File 1.txt
  2. "" | Out-File -Append 1.txt
  3. "net" | Out-File -Append 1.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
xczxczxcz + 1 ac 少乱码

查看全部评分

 楼主| 发表于 2018-10-31 12:04:38 | 显示全部楼层
回复 11# Batcher


    你这是添加空格或添加NET  我想要在文章段落末尾添加空行。比如文章段落中间有个空行一样。不是添加空格。
 楼主| 发表于 2018-10-31 12:07:45 | 显示全部楼层
本帖最后由 xczxczxcz 于 2018-10-31 12:15 编辑

回复 11# Batcher


    我错了,  “” |OUT-FILE 这个可以。

out-file 容易出乱码,要指定编码   我用  add-content  很少乱码。
发表于 2018-10-31 13:10:13 | 显示全部楼层
回复 13# xczxczxcz


    是的,Out-File 默认使用 Unicode 编码,可以用 -Encoding Default 指定使用系统默认的 ANSI 编码
发表于 2018-10-31 14:02:44 | 显示全部楼层
本帖最后由 yhcfsr 于 2018-10-31 19:52 编辑

回复 10# xczxczxcz

  1. $PSDefaultParameterValues['Out-File:Encoding'] = 'default';#设置文件编码
  2. 'abc'>>d:\1.txt;
  3. ''>>d:\1.txt;
  4. 'abdc'>>d:\1.txt;
复制代码

评分

参与人数 1技术 +1 收起 理由
xczxczxcz + 1 谢谢!

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 16:45 , Processed in 0.022207 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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