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

方法1[bat]:
  1. @echo off
  2. for /f "delims=" %%1 in ('powershell "(dir ..  -Dir).name -match '(\d+) *(.+) *- *(.+)'|Out-Null;$matches[1],$matches[2],$matches[3]"')do (
  3. set /a n+=1
  4. call set #_%%n%%=%%1
  5. )
  6. set number=%#_1%
  7. set song=%#_2%
  8. set singer=%#_3%
  9. echo 编号: %number%
  10. echo 歌曲: %song%
  11. echo 歌手: %singer%
  12. pause
复制代码
方法2[bat]:
  1. @echo off
  2. for /f "delims=| tokens=1,2,3" %%1 in ('powershell "(dir ..  -Dir).name -match '(\d+) *(.+) *- *(.+)'|Out-Null;$m=$matches[1],$matches[2],$matches[3];$m[0]+'|'+$m[1]+'|'+$m[2]"')do (
  3. set number=%%1
  4. set song=%%2
  5. set singer=%%3
  6. )
  7. echo 编号: %number%
  8. echo 歌曲: %song%
  9. echo 歌手: %singer%
  10. pause
复制代码
方法3[ps]:
  1. (dir ..  -Dir).name -match '(\d+) *(.+) *- *(.+)'|Out-Null
  2. $number=$Matches[1]
  3. $song=$Matches[2]
  4. $singer=$Matches[3]
  5. @"
  6. 编号: $number
  7. 歌曲: $song
  8. 歌手: $singer
  9. "@
  10. [System.Console]::ReadKey(0)
复制代码
另外如果歌曲名有多级-或者空格的话,楼上所有bat代码均有多多少少的问题,想解决此问题,酌情考虑自己自身需求和实际代码需求,如果所有的歌曲名仅是简单组合,那么就不会有任何问题
否则就不要用纯bat解决问题
1

评分人数

    • 5i365: 很好的示例,多谢技术 + 1

TOP

回复 21# 5i365


    当然可以,自己试试就知道了,正则万能

TOP

返回列表