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