[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 for_flr 于 2021-11-29 10:54 编辑

14题,要求:
    输入任意两个字母,显示这两个字母中间的所有字母。
如:  输入 af 则显示英文字母a至f  如: a  b c d e f
随风前辈批处理如下
  1. @echo off
  2. echo 请按先后顺序输入两个字母 如:af ,不能输入 fa
  3. set /p input=
  4. cls
  5. for %%b in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
  6. if /i "%input:~0,1%"=="%%b" set ok=ok
  7. if /i "%input:~1,1%"=="%%b" set ok=&echo %%b
  8. if defined ok echo %%b
  9. )
  10. echo.&pause&exit
复制代码
::从a到z逐字判断是否等于输入的两个字母。

TOP

13,过滤掉重复的行,然后保存到另一个文本文件。假设有1.txt内容如下:
  1. 锄禾日当午
  2. 汗滴禾下土
  3. 锄禾日当午
  4. 锄禾日当午
  5. 谁知盘中餐
  6. 粒粒皆辛苦
  7. 白日依山尽
  8. 白日依山尽
  9. 白日依山尽
  10. 黄河入海流
  11. 粒粒皆辛苦
  12. 欲穷千里目
  13. 更上一层楼
  14. 更上一层楼
复制代码
批处理版:
  1. @echo off
  2. for /f "delims=" %%i in (1.txt) do (
  3.     if not defined %%i set %%i=1&echo;%%i>>2.txt
  4. )  
  5. pause
复制代码
powershell中有select-object,选择一个对象或一组对象的指定属性。它还可以从对象的数组中选择唯一对象,也可以从对象数组的开头或末尾选择指定个数的对象。
  1. get-content 1.txt|select-object -unique >2.txt
  2. # -unique ,从字符数组中选择唯一字符,即去除重复
复制代码
get-process | sort-object -property WS | select-object -Last 5
#此命令显示占用内存最多的五个进程。Sort-Object 用于按内存(工作集)使用量对进程排序,Select-Object 用于只选择所得到的对象数组的最后五个成员。

TOP

第十,没啥好说的,用get-location,赋值到变量$a=get-location。

十一,批处理的if exist,powershell中有test-path,test-path还支持通配符
  1. if (test-path .\*.mp3){write-host "当前目录有MP3文件"}else{write-host "无"}
复制代码
12,把文本首行和尾行相拼接。
批处理1
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims= " %%a in (a.txt) do (set/a num+=1&set !num!=%%a)
  4. ::对每一行依次赋值到数字序列
  5. echo !1!!%num%!
复制代码
批处理2
  1. @echo off
  2. set /p a=<a.txt
  3. ::获取首行
  4. for /f "delims=" %%i in (a.txt) do set b=%%i
  5. ::依次将行内容赋值到变量b,直到最后一行。
  6. echo %a%%b%
  7. pause>nul
复制代码
powershell
(get-content a.txt)[0,-1]  #文本内容视为数组,0是第一行,-1是最后一行。
  1. (get-content a.txt)[0]+(get-content a.txt)[-1] #用+连接第一行和最后一行。
复制代码

TOP

先列出接下来的几道题,有时间依次琢磨(题目挑选自本论坛批处理新手练功区)
10,获取当前目录路径
11,判断目录或文件是否存在
12,把文本的首行和尾行相拼接
13,过滤掉重复的行,然后保存到另一个文本文件
14,输入两个字母,显示它们之间的所有字母
15,字符串中的大小写互换
16,计算字符串长度
17,检查《千字文》是否有重复字
18,在控制台输出闪电图形

TOP

本帖最后由 for_flr 于 2021-11-29 14:18 编辑

powershell解题思路跟上面bat是一样的,唉,感觉走错胡同巷子了。
用get-content获取文本内容。
  1. $n=0
  2. $str="一二三四五六七八"
  3. foreach ($line in get-content a.txt){write-host $str.substring($n,1)"#"$line;$n=$n+1}
复制代码
#get-content a.txt|foreach{write-host $str.substring($n,1)"#"$_;$n++}  #等同于上一句
  1. (get-content a.txt).count    #获取a.txt文本行数。
  2. (get-content a.txt)[0,3]    #获取第1和第4行,因为数组下标从0开始计数,可用负数表示倒数计数。
  3. (get-content a.txt)[0..3]    #获取第1到第4行,..两个点表示范围操作符。
  4. get-content a.txt -totalcount 4    #获取前4行,据说无需完全读取文本,某些情境可提高效率。
复制代码

TOP

本帖最后由 for_flr 于 2021-11-26 13:52 编辑

第九题,给txt中文本内容添加汉字行号(不超过10行)

十年生死两茫茫
不思量,自难忘
千里孤坟,无处话凄凉
纵使相逢应不识,尘满面,鬓如霜
夜来幽梦忽还乡
小轩窗,正梳妆
相顾无言,惟有泪千行
料得年年肠断处,明月夜,短松冈
  1. 一#十年生死两茫茫
  2. 二#不思量,自难忘
  3. 三#千里孤坟,无处话凄凉
  4. 四#纵使相逢应不识,尘满面,鬓如霜
  5. 五#夜来幽梦忽还乡
  6. 六#小轩窗,正梳妆
  7. 七#相顾无言,惟有泪千行
  8. 八#料得年年肠断处,明月夜,短松冈
复制代码
——————————————————
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set s=一二三四五六七八
  4. set n=0
  5. for /f "delims=" %%a in (a.txt) do (
  6. call echo;%%s:~!n!,1%%#%%a
  7. set/a n+=1
  8. )
  9. pause>nul
复制代码
此题目好像有点难,先学习一下。

TOP

回复 12# for_flr


    等你学了数组集合枚举就明了,很简单的,还是留给你自己补全好些。后面内容还很多,l/o,网络,注册表,计划任务,防火墙,安全,线程等一大堆东西。
QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

八题,建立1到10的文件夹,然后删除它们。
cmd
  1. for /l %%a in (1 1 10) do md %%a
复制代码
powershell中
new-item -name abc.txt -type file -value "hello" #new-item建立项,-name文件名,-value文件内容
new-item -name def -type directory #-type指定类型为文件或者文件夹。
  1. for ($i=1;$i -le 10;$i+=1){new-item -name $i -type directory} #建立1-10文件夹
复制代码
  1. get-childitem|?{$_.psiscontainer}|remove-item #删除目录下的文件夹
复制代码
暂时觉得批处理中,dir/b ,dir /s /a-d 等参数组合,比powershell更好用。
比如只显示当前目录下的文件夹
用$host看到我的ps版本为2.0,需要用
  1. get-childitem|?{$_.psiscontainer}    或者   get_childitem -exclude *.*
复制代码

TOP

本帖最后由 for_flr 于 2021-11-30 11:05 编辑

七题,随机显示星期几
周一 周二 周三 周四 周五 周六 周日
利用随机数随机显示一天
批处理:
  1. @echo off
  2. ::作者bbcc的代码
  3. set "code=周一 周二 周三 周四 周五 周六 周日"
  4. :main
  5. set /a strRan=%random%%%7+1
  6. for /f "tokens=%strRan% delims=, " %%a in ("%code%") do (echo %%a)
  7. pause>nul
  8. goto :main
复制代码
  1. @echo off
  2. ::作者lhjoanna的代码
  3. set "str=一二三四五六日"
  4. set /a num=%random%%%7
  5. call echo 星期%%str:~%num%,1%%
  6. pause>nul
复制代码
powershell只能说666
  1. get-random -input "周一","周二","周三","周四","周五","周六","周日"
复制代码
get-random太好用了
  1. get-random -min 1 -max 8 #产生1到7的随机数,数字可指定负数或小数
复制代码
大于等于最小值,小于最大值】
  1. get-random -input 1,2,3,4,5,6,7
  2. #从-input后添加的集合中随机产生一个,也可以加 -count参数产生指定数量个。
复制代码
  1. get-childitem|get-random -count 2
  2. #可以加管道,dir结果中随机挑选2个显示出来。
复制代码

TOP

  1. for /f  "tokens=1,3,5 delims= "
复制代码
像这样挑选出第1,3,5列内容的用法,不知道powershell中有没有
一时想不到关键字去描述搜索
望路过大佬解惑

TOP

六题,循环十秒倒计时
批处理
  1. @echo off
  2. for /l %%a in (10 -1 1) do echo;%%a&ping 127.1 -n 2 >nul
复制代码
powershell
用get-help about_for获取for的帮助信息
  1. for ($i=10;$i -gt 0;$i-=1) {$i;ping 127.1 -n 2|out-null}
复制代码
()圆括号内用分号;分别隔开初始值;条件;循环方法
{}大括号内用分号;隔开命令语句
ping 127.1 >nul 不能用在powershell中,看不懂提示,不知为何,百度到可以用管道加out-null。
我相信powershell应该有停顿一秒的命令、方法,只是我暂时没找到。

TOP

本帖最后由 for_flr 于 2021-11-30 09:11 编辑

字符串对象的方法太多,处理字符串上肯定是比cmd厉害。英语不好的同学,记忆起来挑战很大。
新手练功区第三、四、五题可以一起练习了。
三,批处理字符串替换
  1. set w=www.bathome.net
  2. set w=%w:bathome=powershell%
  3. echo;%w%
复制代码
powershell字符串替换
  1. $w="www.bathome.net"
  2. $w=$w.replace("bathome","powershell")
  3. $w
  4. write-host $w
复制代码
四,将“今日明月在”显示为“明月今日在”
  1. @echo off
  2. set "s=今日明月在"
  3. echo %s:~2,-1%%s:~0,2%%s:~-1,1%
  4. pause>nul&exit /b
复制代码
powershell还是用substring()
  1. $s="今日明月在"
  2. $s.substring(2,2)+$s.substring(0,2)+$s.substring(4,1)
复制代码
powershell打字量颇多......  对了,可以按TAB键自动补充命令输入。
五,简易密码登录
批处理一般这样写
  1. @echo off
  2. set pwd=123456
  3. set /p in=输入密码:
  4. if "%pwd%" equ "%in%" ( echo;密码正确 ) else ( echo;密码错误 )
  5. pause>nul
复制代码
powershell跟批处理一模一样。
set /p a=    等于  $a=read-host
echo;123         等于  write-host "123"
  1. $pwd=123456
  2. $in=read-host "输入密码:" -assecurestring
  3. #-assecurestring 参数,会用*符号掩盖用户输入的字符,secure安全,as介词“作为”,string字符串。所以我把这个参数记忆成“作为安全字符串”,哈~
  4. if ($pwd -eq $in) {write-host "密码正确"} else {write-host "密码错误"}
复制代码

TOP

.NET 版
  1. 【 [System.String] 】
  2. ::Compare()
  3.    >static int Compare(string strA, string strB)
  4.    >static int Compare(string strA, string strB, bool ignoreCase)
  5.    >static int Compare(string strA, string strB, System.StringComparison comparisonType)
  6.    >static int Compare(string strA, string strB, cultureinfo culture, System.Globalization.CompareOptions options)
  7.    >static int Compare(string strA, string strB, bool ignoreCase, cultureinfo culture)
  8.    >static int Compare(string strA, int indexA, string strB, int indexB, int length)
  9.    >static int Compare(string strA, int indexA, string strB, int indexB, int length, bool ignoreCase)
  10.    >static int Compare(string strA, int indexA, string strB, int indexB, int length, bool ignoreCase, cultureinfo culture)
  11.    >static int Compare(string strA, int indexA, string strB, int indexB, int length, cultureinfo culture, System.Globalization.CompareOptions options)
  12.    >static int Compare(string strA, int indexA, string strB, int indexB, int length, System.StringComparison comparisonType)
  13. ::CompareOrdinal()
  14.    >static int CompareOrdinal(string strA, string strB)
  15.    >static int CompareOrdinal(string strA, int indexA, string strB, int indexB, int length)
  16. ::Concat()
  17.    >static string Concat(System.Object arg0)
  18.    >static string Concat(System.Object arg0, System.Object arg1)
  19.    >static string Concat(System.Object arg0, System.Object arg1, System.Object arg2)
  20.    >static string Concat(System.Object arg0, System.Object arg1, System.Object arg2, System.Object arg3)
  21.    >static string Concat(Params System.Object[] args)
  22.    >static string Concat(System.Collections.Generic.IEnumerable[string] values)
  23.    >static string Concat(string str0, string str1)
  24.    >static string Concat(string str0, string str1, string str2)
  25.    >static string Concat(string str0, string str1, string str2, string str3)
  26.    >static string Concat(Params string[] values)
  27.    >static string Concat[T](System.Collections.Generic.IEnumerable[T] values)
  28. ::Copy()
  29.    >static string Copy(string str)
  30. ::Equals()
  31.    >static bool Equals(string a, string b)
  32.    >static bool Equals(string a, string b, System.StringComparison comparisonType)
  33.    >static bool Equals(System.Object objA, System.Object objB)
  34. ::Format()
  35.    >static string Format(string format, System.Object arg0)
  36.    >static string Format(string format, System.Object arg0, System.Object arg1)
  37.    >static string Format(string format, System.Object arg0, System.Object arg1, System.Object arg2)
  38.    >static string Format(System.IFormatProvider provider, string format, System.Object arg0)
  39.    >static string Format(System.IFormatProvider provider, string format, System.Object arg0, System.Object arg1)
  40.    >static string Format(System.IFormatProvider provider, string format, System.Object arg0, System.Object arg1, System.Object arg2)
  41.    >static string Format(string format, Params System.Object[] args)
  42.    >static string Format(System.IFormatProvider provider, string format, Params System.Object[] args)
  43. ::Intern()
  44.    >static string Intern(string str)
  45. ::IsInterned()
  46.    >static string IsInterned(string str)
  47. ::IsNullOrEmpty()
  48.    >static bool IsNullOrEmpty(string value)
  49. ::IsNullOrWhiteSpace()
  50.    >static bool IsNullOrWhiteSpace(string value)
  51. ::Join()
  52.    >static string Join(string separator, Params string[] value)
  53.    >static string Join(string separator, Params System.Object[] values)
  54.    >static string Join(string separator, System.Collections.Generic.IEnumerable[string] values)
  55.    >static string Join(string separator, string[] value, int startIndex, int count)
  56.    >static string Join[T](string separator, System.Collections.Generic.IEnumerable[T] values)
  57. ::new()
  58.    >string new(System.Char*, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 value)
  59.    >string new(System.Char*, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 value, int startIndex, int length)
  60.    >string new(System.SByte*, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 value)
  61.    >string new(System.SByte*, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 value, int startIndex, int length)
  62.    >string new(System.SByte*, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 value, int startIndex, int length, System.Text.Encoding enc)
  63.    >string new(char[] value, int startIndex, int length)
  64.    >string new(char[] value)
  65.    >string new(char c, int count)
  66. ::ReferenceEquals()
  67.    >static bool ReferenceEquals(System.Object objA, System.Object objB)
  68. ::Empty()
  69.    >static string Empty {get;}
复制代码
1

评分人数

    • for_flr: 请大佬指导下10L问题。技术 + 1
QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

完整的:
  1. System.Object Clone()
  2.   > System.Object ICloneable.Clone()
  3. int CompareTo(System.Object value)
  4.   > int CompareTo(string strB)
  5.   > int IComparable.CompareTo(System.Object obj)
  6.   > int IComparable[string].CompareTo(string other)
  7. bool Contains(string value)
  8. void CopyTo(int sourceIndex, char[] destination, int destinationIndex, int count)
  9. bool EndsWith(string value)
  10.   > bool EndsWith(string value, System.StringComparison comparisonType)
  11.   > bool EndsWith(string value, bool ignoreCase, cultureinfo culture)
  12. bool Equals(System.Object obj)
  13.   > bool Equals(string value)
  14.   > bool Equals(string value, System.StringComparison comparisonType)
  15.   > bool IEquatable[string].Equals(string other)
  16. System.CharEnumerator GetEnumerator()
  17.   > System.Collections.IEnumerator IEnumerable.GetEnumerator()
  18.   > System.Collections.Generic.IEnumerator[char] IEnumerable[char].GetEnumerator()
  19. int GetHashCode()
  20. type GetType()
  21. System.TypeCode GetTypeCode()
  22.   > System.TypeCode IConvertible.GetTypeCode()
  23. int IndexOf(char value)
  24.   > int IndexOf(char value, int startIndex)
  25.   > int IndexOf(string value)
  26.   > int IndexOf(string value, int startIndex)
  27.   > int IndexOf(string value, int startIndex, int count)
  28.   > int IndexOf(string value, System.StringComparison comparisonType)
  29.   > int IndexOf(string value, int startIndex, System.StringComparison comparisonType)
  30.   > int IndexOf(string value, int startIndex, int count, System.StringComparison comparisonType)
  31.   > int IndexOf(char value, int startIndex, int count)
  32. int IndexOfAny(char[] anyOf)
  33.   > int IndexOfAny(char[] anyOf, int startIndex)
  34.   > int IndexOfAny(char[] anyOf, int startIndex, int count)
  35. string Insert(int startIndex, string value)
  36. bool IsNormalized()
  37.   > bool IsNormalized(System.Text.NormalizationForm normalizationForm)
  38. int LastIndexOf(char value)
  39.   > int LastIndexOf(char value, int startIndex)
  40.   > int LastIndexOf(string value)
  41.   > int LastIndexOf(string value, int startIndex)
  42.   > int LastIndexOf(string value, int startIndex, int count)
  43.   > int LastIndexOf(string value, System.StringComparison comparisonType)
  44.   > int LastIndexOf(string value, int startIndex, System.StringComparison comparisonType)
  45.   > int LastIndexOf(string value, int startIndex, int count, System.StringComparison comparisonType)
  46.   > int LastIndexOf(char value, int startIndex, int count)
  47. int LastIndexOfAny(char[] anyOf)
  48.   > int LastIndexOfAny(char[] anyOf, int startIndex)
  49.   > int LastIndexOfAny(char[] anyOf, int startIndex, int count)
  50. string Normalize()
  51.   > string Normalize(System.Text.NormalizationForm normalizationForm)
  52. string PadLeft(int totalWidth)
  53.   > string PadLeft(int totalWidth, char paddingChar)
  54. string PadRight(int totalWidth)
  55.   > string PadRight(int totalWidth, char paddingChar)
  56. string Remove(int startIndex, int count)
  57.   > string Remove(int startIndex)
  58. string Replace(char oldChar, char newChar)
  59.   > string Replace(string oldValue, string newValue)
  60. string[] Split(Params char[] separator)
  61.   > string[] Split(char[] separator, int count)
  62.   > string[] Split(char[] separator, System.StringSplitOptions options)
  63.   > string[] Split(char[] separator, int count, System.StringSplitOptions options)
  64.   > string[] Split(string[] separator, System.StringSplitOptions options)
  65.   > string[] Split(string[] separator, int count, System.StringSplitOptions options)
  66. bool StartsWith(string value)
  67.   > bool StartsWith(string value, System.StringComparison comparisonType)
  68.   > bool StartsWith(string value, bool ignoreCase, cultureinfo culture)
  69. string Substring(int startIndex)
  70.   > string Substring(int startIndex, int length)
  71. bool IConvertible.ToBoolean(System.IFormatProvider provider)
  72. byte IConvertible.ToByte(System.IFormatProvider provider)
  73. char IConvertible.ToChar(System.IFormatProvider provider)
  74. char[] ToCharArray()
  75.   > char[] ToCharArray(int startIndex, int length)
  76. datetime IConvertible.ToDateTime(System.IFormatProvider provider)
  77. decimal IConvertible.ToDecimal(System.IFormatProvider provider)
  78. double IConvertible.ToDouble(System.IFormatProvider provider)
  79. int16 IConvertible.ToInt16(System.IFormatProvider provider)
  80. int IConvertible.ToInt32(System.IFormatProvider provider)
  81. long IConvertible.ToInt64(System.IFormatProvider provider)
  82. string ToLower()
  83.   > string ToLower(cultureinfo culture)
  84. string ToLowerInvariant()
  85. sbyte IConvertible.ToSByte(System.IFormatProvider provider)
  86. float IConvertible.ToSingle(System.IFormatProvider provider)
  87. string ToString()
  88.   > string ToString(System.IFormatProvider provider)
  89.   > string IConvertible.ToString(System.IFormatProvider provider)
  90. System.Object IConvertible.ToType(type conversionType, System.IFormatProvider provider)
  91. uint16 IConvertible.ToUInt16(System.IFormatProvider provider)
  92. uint32 IConvertible.ToUInt32(System.IFormatProvider provider)
  93. uint64 IConvertible.ToUInt64(System.IFormatProvider provider)
  94. string ToUpper()
  95.   > string ToUpper(cultureinfo culture)
  96. string ToUpperInvariant()
  97. string Trim(Params char[] trimChars)
  98.   > string Trim()
  99. string TrimEnd(Params char[] trimChars)
  100. string TrimStart(Params char[] trimChars)
  101. char Chars(int index) {get;}
  102. int Length {get;}
复制代码
QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

下面给出String对象的所有方法:

函数        描述        示例
CompareTo()        与另一个字符串比较        (“Hello”).CompareTo(“Hello”)
Contains()        是否包含制定子串        (“Hello”).Contains(“ll”)
CopyTo()        拷贝子串至新字符串中        $a = (“HelloWorld”).toCharArray()(“User!”).CopyTo(0, a, 6, 5)a,6,5)a
EndsWith()        是否以制定子串结尾        (“Hello”).EndsWith(“lo”)
Equals()        是否与另一个字符串相同        (“Hello”).Equals($a)
IndexOf()        返回第一次匹配的所索引        (“Hello”).IndexOf(“l”)
IndexOfAny()        返回字符串中任意字符的首次匹配索引        (“Hello”).IndexOfAny(“loe”)
Insert()        在指定位置插入字符串        (“HelloWorld”).Insert(6,”brave “)
GetEnumerator()        枚举字符串中所有字符        (“Hello”).GetEnumerator()
LastIndexOf()        字符的最后匹配位置        (“Hello”).LastIndexOf(“l”)
LastIndexOfAny()        任意字符的最后匹配位置        (“Hello”).LastIndexOfAny(“loe”)
PadLeft()        左边补齐空白是字符串至指定长度        (“Hello”).PadLeft(10)
PadRight()        右边填充空白是字符串至指定长度        (“Hello”).PadRight(10) + “World!”
Remove()        从指定位置开始移除指定长度        (“PsTips”).Remove(2,2)
Replace()        替换指定字符串        (“PsTips”).replace(“Ps”,”PS1″)
Split()        以指定分隔符切割字符串        (“HelloWorld”).Split(“l”)
StartsWith()        是否以指定子串开始        (“HelloWorld”).StartsWith(“He”)
Substring()        从指定位置取指定长度子串        “HelloWorld”).Substring(4,3)
ToCharArray()        转换成字符数组        (“HelloWorld”).toCharArray()
ToLower()        转换成小写        (“HelloWorld”).toLower()
ToLowerInvariant() 以区域规则转换成小写        (“HelloWorld”).ToUpperInvariant()
ToUpper()        转换成大写        (“HelloWorld”).ToUpper()
ToUpperInvariant() 以区域规则转换成大写        (“HelloWorld”).ToUpperInvariant()
Trim()        移除字符串前后空格        (” HelloWorld “). Trim()
TrimEnd()        移除字符串结尾的空格        (“HelloWorld “). TrimEnd()
TrimStart()        移除字符串开始的空格        (” HelloWorld”). TrimStart()
Chars()        返回指定位置的字符        (“Hello”).Chars(0)
1

评分人数

    • idwma: 感谢分享技术 + 1

TOP

返回列表