标题: [文本处理] 在批处理中调用 powershell 发现速度很慢,在找问题原因。 [打印本页]
作者: xczxczxcz 时间: 2018-10-29 20:55 标题: 在批处理中调用 powershell 发现速度很慢,在找问题原因。
本帖最后由 xczxczxcz 于 2018-10-29 20:56 编辑
如下面这条 查找 与 00.bat 同目录下的 00.txt 的哈希值。- for /f "tokens=2 delims=: " %%e in ('powershell "get-filehash '00.txt' -Algorithm SHA1|FL"^|findstr /i "Hash"') do echo %%e
复制代码
====================
若用 certutil 命令很快。同样在处理网页内容时,用批命令处理虽繁琐点,但速度快。POWERSHELL 可以过滤,转码,文档截取等可以用管道一行命令处理完,但速度不快。偶现在一直找不到提速的方法。
求加速方法? 批和PS 混编。
作者: Batcher 时间: 2018-10-29 21:21
用的哪个版本?升级到5.x有效果没
作者: xczxczxcz 时间: 2018-10-29 21:44
回复 2# Batcher
Windows 10 17134 最新版 PS 5.1.17134.228复制代码
老大,分析一下。
作者: xczxczxcz 时间: 2018-10-29 21:48
单纯用PS速度也不错,但比 纯P 还是慢那点。
作者: yhcfsr 时间: 2018-10-29 22:18
本帖最后由 yhcfsr 于 2018-10-29 22:24 编辑
这个没办法,CMD加载POWERSHELL命令时需要时间,我的体验是平均1-1.5S左右
可以BAT调用PS脚本这种双文件方式.
如果非要单文件BAT,可以将PS脚本的命令全部放到BAT里面,不过要做些改变.有点烦琐
作者: xczxczxcz 时间: 2018-10-29 22:50
回复 5# yhcfsr
是的。偿试 把PS 单独写一行。会快那么一点点。
如果把 PS的所有脚本内容搬到 批中。真的很麻烦。至少现在偶感觉麻烦。那个 $ 感觉不好处理。
调用 PS外部脚本,还没试它的结果能不能正确返回 批中。当然可以采用输出到文本的方式。不过这样就多了时间差的问题。如PS脚本还没完,批已运行到末行。还没试,纯假设。
2600个网页截取内容转码过滤,开始用了47分钟。太慢。经过两3天的 help 各种参数。现在也可以在20分钟内处理完。但纯P只要5-6分钟。
ps cmdlet 太多,真的不好找出最佳命令。
目前还不好完全脱离 批命令.
作者: Batcher 时间: 2018-10-30 12:43
回复 6# xczxczxcz
如果需要在bat的for或goto循环内部频繁调用powershell,那确实比较影响性能。
作者: yhcfsr 时间: 2018-10-30 18:32
回复 6# xczxczxcz
POWERSHELL转BAT确实有多此一举的感觉.
小文件处理BAT有一定优势.
大数据处理,BAT是无论如何也比不上POWERSHELL的
POWERSHELL的编程有一定技巧,很小的改动,效率可能天壤之别.
多用.NET的命令,尝试用多线程处理任务.
作者: xczxczxcz 时间: 2018-10-31 09:53
回复 8# yhcfsr
昨天用纯PS写了个,处理550个网页,3-4秒全部搞定。速度很快。
作者: xczxczxcz 时间: 2018-10-31 09:57
回复 7# Batcher
老大,PS 中如何输入一个或多个空行。这个我真的不知道。网络上都是一些去空行的。类似批处理中的 echo;>xxx的功能。
作者: Batcher 时间: 2018-10-31 11:53
回复 10# xczxczxcz
是这个意思吗?- "bathome" | Out-File 1.txt
- "" | Out-File -Append 1.txt
- "net" | Out-File -Append 1.txt
复制代码
作者: xczxczxcz 时间: 2018-10-31 12:04
回复 11# Batcher
你这是添加空格或添加NET 我想要在文章段落末尾添加空行。比如文章段落中间有个空行一样。不是添加空格。
作者: xczxczxcz 时间: 2018-10-31 12:07
本帖最后由 xczxczxcz 于 2018-10-31 12:15 编辑
回复 11# Batcher
我错了, “” |OUT-FILE 这个可以。
out-file 容易出乱码,要指定编码 我用 add-content 很少乱码。
作者: Batcher 时间: 2018-10-31 13:10
回复 13# xczxczxcz
是的,Out-File 默认使用 Unicode 编码,可以用 -Encoding Default 指定使用系统默认的 ANSI 编码
作者: yhcfsr 时间: 2018-10-31 14:02
本帖最后由 yhcfsr 于 2018-10-31 19:52 编辑
回复 10# xczxczxcz - $PSDefaultParameterValues['Out-File:Encoding'] = 'default';#设置文件编码
- 'abc'>>d:\1.txt;
- ''>>d:\1.txt;
- 'abdc'>>d:\1.txt;
复制代码
作者: yhcfsr 时间: 2018-10-31 19:53
回复 13# xczxczxcz
我看到你要求用ANSI,我更新了下15楼代码.
作者: 5i365 时间: 2022-1-8 09:26
回复 15# yhcfsr
不错, 可以修改默认编码, 学习了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |