[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
小结1:
有一定批处理基础,学习powershell的语法和各命令用法肯定是没有问题的。觉得难,其实主要是两个脚本思路完全不一样了。必须牢记powershell处理对象,了解各种对象本身具有哪些属性和方法,用语法组织这些属性方法解决问题。

TOP

小结2:
回顾一楼第一题到30楼十九题。补充更正一些东西。
产生01-20递增序列
  1. foreach($a in 101..120){($a|out-string).remove(0,1)}
  2. 101..120|%{($_|out string).remove(0,1)} #之前没了解对象,错误理解了.remove()
  3. 1..20|%{"{0:d2}" -f $_}
复制代码
范围操作符..,表示连续数字。如-1..-9生成-1到-9的数组
格式化输出字符串-f,如下
  1. "{0,15}{1,15}{2,15}" -f 1,2,3
  2. "{0,15}{1,15}{2,15}" -f "hello","boy","!"
复制代码
固定字符长度,不足的补空格。{}大括号中,逗号前的数字表示-f后面所跟参数的下标。
{}大括号中,逗号后的数字表示字符占位长度
  1. ("{0,15}{1,15}{2,15}" -f 1,2,3).length  #用这两个可以加强印象
  2. ("{0,15}{1,15}{2,15}" -f "hello","boy","!").length
复制代码
  1. "{0:d8}" -f 3 #冒号后的d表示数字的补零,8表示8位
复制代码
冒号后还可以换f表示小数,p表示百分数,x表示16进制...

10秒倒计时
  1. foreach ($i in 10..1){$i;sleep -s 1}
复制代码
Measure-command{foreach ($i in 10..1){$i;sleep -s 1}}  #用measure看了下,挺精准。

类似for /f "delims= tokens=5"切割并挑选。
  1. "abc def 123 456 apple 123 45".split(" ")[4]
  2. ("abc-123-###-电源盒子-powershell" -split "-")[2,4]
复制代码
给小诗加汉字行号
  1. foreach($n in 0..7){"一二三四五六七八"[$n]+"#"+(gc a.txt)[$n]}
复制代码
建立1-10文件夹
  1. foreach($i in 1..10){md $i}
复制代码
  1. md (1..10)  #还能这样!
复制代码
关于这种格式用法[system.io.path]::getfilename()
::静态成员运算符,[]方括号中是类名。
类名::属性名     ,类名::方法名()  
.成员运算符
$对象.属性        ,$对象.方法()

千字文
  1. ((gc a.txt) -replace (" ","")|measure-object  -char).characters
复制代码
measure-command验证效率略高于原答案
  1. ((gc a.txt) -split(" ")|?{$_ -ne ""})[-1..-250] #逆序输出并去空行
复制代码

TOP

千字文,统计重复单字
  1. $txt=(gc qzw.txt).split()|?{$_ -ne ""}
  2. $dic=@{}
  3. foreach($w in $txt){
  4. for($i=0;$i -le 3;$i++){
  5. if (!$dic.containskey($w[$i])){
  6. $dic[$w[$i]]=1
  7. } else {
  8. $dic[$w[$i]]+=1
  9. }
  10. }
  11. }
  12. write-host "千字文中有以下重复字"
  13. $dic.getenumerator()|?{$_.value -gt 1}
  14. [console]::readkey()
复制代码

TOP

返回列表