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

powershell可以这样写
  1. get-childitem -path .\* -include *.wma,*.mp3|rename-item -newname{
  2. $_.name.remove(0,$_.name.indexof("-")+1)
  3. }
复制代码
思路是用.indexof("-")返回第一个分隔符-所在文件名长度位置,然后用.remove()将那段长度删除。
搜索资料隐约确定,-filter只能有一个参数,-include可以跟多个参数。
用-include参数,路径用\*
$_ 类似于批处理中的%%a
本帖记录学习过程,个中错误,望指正。
——————————
根据下一楼资料,如果要获取歌曲名称,删除编号和歌手,可以用lastindexof()获取分隔符最后出现的位置,用substring()截取字符串
  1. get-childitem -path .\* -include *.wma,*.mp3|rename-item -newname{
  2. $_.name.substring($_.name.lastindexof("-")+1)
  3. }
复制代码

TOP

第二题,去除歌曲编号(重命名)
  1. ::测试环境生成
  2. @echo off
  3. md 测试目录
  4. cd 测试目录
  5. del/q *
  6. cd.>"001 - 萨顶顶 - 万物生.mp3"
  7. cd.>"002 - 萨顶顶 - 神香.wma"
  8. cd.>"003 - 邓丽君 - 月亮代表我的心.mp3"
  9. cd.>"011 - 戴娆 - 绽放.mp3"
  10. cd.>"010 - 梦之旅 - 铃儿响叮当.mp3"
  11. cd.>"007 - 卓依婷 - 捉泥鳅.mp3"
  12. cd.>"009 - 周杰伦 - 稻香.wma"
  13. cd.>"005 - Lene - Pretty Young Thing.wma"
  14. cd.>"029 - M2M - The Day You Went Away.mp3"
复制代码
wp3格式和wma格式歌曲,去除歌曲名字前面的编号,只剩歌名、歌手
批处理可以这样写:
  1. @echo off
  2. for /f "delims=" %%a in ('dir /b /a-d *.mp3 *.wma') do (
  3.     for /f "tokens=1,2,3 delims=-" %%i in ("%%~na") do (
  4.         ren "%%~a" "%%j - %%k%%~xa"
  5.     )
  6. )  
复制代码

TOP

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

搜寻得到
  1. $num=1001..1999
复制代码
可以产生1001-1999的序列数字,原以为对每个数字进行字符串截取即可完成.
找到"abcdefg".remove(3,4)这样的字符串截取方法。
却发现不允许$num.remove(0,1)这样的用法。
老实用do循环吧,每个数字前补0即可。
  1. $aa=1
  2. do
  3. {
  4. $bb="{0:d3}" -f ($aa)
  5. $bb
  6. $aa++
  7. }
  8. until($aa -gt 999)
  9. cmd /c pause
复制代码
附上一段powershell字符串处理资料:
  1. 1、字符串格式化
  2.   在说字符串格式化,首先得说单双引号的作用,在powershell中双引号不会屏蔽变量,但单引号会屏蔽,示例如下:
  3. PS C:\> $a = "i have a dream."
  4. PS C:\> Write-Output "this is $a"
  5. this is i have a dream.
  6. PS C:\> Write-Output 'this is $a'
  7. this is $a
  8.   由上述示例我们可以看出,使用单引号会对变量进行转义,而使用双引号则会输出变量的值。
  9.   接下来,再看看字符串格式化的使用,示例如下:  
  10. PS C:\> $a = "i have a dream."
  11. PS C:\> $b = " the variable is $a ,value is {0},there are {1} words" -f $a,4
  12. PS C:\> Write-Output $b
  13. the variable is i have a dream. ,value is i have a dream.,there are 4 words
  14.   字符串格式换中,使用{0},{1},{2}...来代替字符串中变量的位置,-f  后的参数与前面的位置变量相对应。
  15.   接下来我们来探究一下花括号{} 内部的秘密:
  16. 秘密一——固定行宽,即指定每次输入的字符长度,不足的空白补全。
  17. PS C:\> $a = "name"
  18. PS C:\> $b = "age"
  19. PS C:\> $c = "sex"
  20. PS C:\> $d = "{0,-15}{1,-15}{2,-15}"
  21. PS C:\> $d = "{0,-15}{1,-15}{2,-15}" -f $a,$b,$c
  22. PS C:\> Write-Output $d
  23. name           age            sex  
  24.   {0,-15}表示的是第一的变量,占位字符总长度是15,“-”代表左对齐
  25.   【注】{位置,±占位总长},其中“+”代表右对齐,“-”代表左对齐
  26. 秘密二——将数字转换成百分数
  27. PS C:\> "{0:p}" -f 0.31415926
  28. 31.42%
  29. PS C:\> "{0:p3}" -f 0.31415926
  30. 31.416%
  31. PS C:\> "{0:p5}" -f 0.31415926
  32. 31.41593%
  33. PS C:\> "{0:p}" -f "1.23"
  34. 1.23
  35.   百分数转换是用“p”来表示的,默认保留两位有效数字,若“p”后的数字是5,那么就代表保留五位有效数字。
  36.   注意:百分数的转换针对的是整型和浮点型,不能对字符进行转换。
  37. 秘密三——保留几位小数
  38. PS C:\> "{0:n0}" -f 3.1415
  39. 3
  40. PS C:\> "{0:n}" -f 3.1415
  41. 3.14
  42. PS C:\> "{0:n3}" -f 3.1415
  43. 3.142
  44.   n代表要保留几位有效数字,默认是两位有效数字
  45. 2、字符串替换
  46. PS C:\> "i have a dream" -replace "dream","apple"
  47. i have a apple
  48. PS C:\> "i have a dream" -replace "DREAM","apple"
  49. i have a apple
  50. PS C:\> "i have a dream" -creplace "DREAM","apple"
  51. i have a dream
  52. PS C:\> "i have a dream" -creplace "dream","apple"
  53. i have a apple
  54.   字符串替换是“-replace”参数,-replace 可以不区分大小写,而-creplace严格按照大小写来匹配。
  55. 3、包含
  56. PS C:\> "i have a dream" -match "i"
  57. True
  58. PS C:\> "i have a dream" -match "I"
  59. True
  60. PS C:\> "i have a dream" -cmatch "i"
  61. True
  62. PS C:\> "i have a dream" -cmatch "I"
  63. False 
  64. PS C:\> "i have a dream".Contains("have")
  65. True
  66. PS C:\> "i have a dream".Contains("Have")
  67. False
  68.   判断某个字符串是否包含,返回True或False,“-cmatch”严格匹配大小写。
  69.        其实-match的作用不止这些,下一节会提到它的扩展。
  70. 4、过滤器
  71. PS C:\> "3.1415926" -like "3.14*"
  72. True
  73.   “-like”参数支持基本的正则表达式,*代表任意所有,?代表一个字符,.只代表.
  74.   判断字符串的格式是否符合用户所要求的,如上例,“3.14*”表示已以3.14开头的字符,匹配即为True。
  75. 5、字符串分割(将字符串转成列表)
  76. PS C:\> "i have a dream".Split()
  77. i
  78. have
  79. a
  80. dream
  81. PS C:\> "i have a dream".Split("a")
  82. i h
  83. ve
  84. dre
  85. m
  86.   split的作用是将字符串中按照某个字符来分割成列表,默认以空格分割,支持多个分隔符
  87. PS C:\> "http://www.baidu.com".Split('./:')
  88. http
  89. www
  90. baidu
  91. com
  92.   上述例子是将某个字符以“.” “/” “:”来分割,分割出的结果含有两个空白,原因是“/”和“:”都是分隔符,当分割了“:”后,http会与之后的字符分为两行,此时用需要用“/”来分割,在此基础上再次分割,因此产生了空白行,空白行的取消方法如下:
  93. PS C:\> "http://www.baidu.com".Split('./:',[StringSplitOptions]::RemoveEmptyEntries)
  94. http
  95. www
  96. baidu
  97. com
  98.  6、字符串比较  
  99. PS C:\> "i have a dream ".CompareTo("i have a dream")
  100. 1
  101. PS C:\> "i have a dream ".CompareTo("i have a dream ")
  102. 0
  103. PS C:\> "i have a dream ".CompareTo("i have a Dream ")
  104. -1
  105.   字符串比较不支持“-CompareTo”,使用方法是“.CompareTo”,严格区分大小写,完全一致才返回“0”。
  106. 7、字符串的长度
  107. PS C:\> "i have a dream".Length
  108. 14
  109. 8、插入新的字符串
  110. PS C:\> "i have a dream".Insert(9,"new ")
  111. i have a new dream
  112.   Insert的使用方法,在某个位置插入什么字符串,字符串的第一个字符的下标是0,从0开始算起,上述例子,在下位为(9+1)的位置插入“new ”字符串
  113. 9、删除指定的字符串
  114. PS C:\> "i have a dream".Remove(9,5)
  115. i have a
  116.   同上述例子,下标从0开始,在某个位置删除几个字符。
  117. 10、将多个字符串按特定规则组成一个
  118. PS C:\> "i","have","a","dream" -join(" ")
  119. i have a dream
  120.   上述例子是将多个字符串以空格分割组成,同样也可以以其他符合组合,比如:
  121. PS C:\> "10","20","30" -join(":")
  122. 10:20:30 
复制代码

TOP

返回列表