批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖

[文本处理] [已解决]根据文本指定内容进行指定排序?

本帖最后由 czvde 于 2022-5-15 19:54 编辑

文件夹有以下文件:
123.txt
23.txt
……
3000.txt

123.txt的内容如下:
aa_aa
123_123
100_900_001


效果
123-1.txt的内容如下:
aa_aa
100_900_001
123_123

123-a.txt的内容如下:
123_123
100_900_001
aa_aa

123-z.txt的内容如下:
100_900_001
123_123
aa_aa

已解决!

  1. #@&cls&powershell "type %~s0|out-string|iex"&pause&exit
  2. $a=@{}
  3. gc '123.txt'|%{$a[$_.split('_')[1].length]+=@($_)}
  4. sc '123-1.txt' $($a.keys|sort{[int]$_}|%{$a[$_]|sort -desc{$_.split('_')[1]}})
  5. sc '123-a.txt' $($a.keys|%{$a[$_]|sort{$_.split('_')[1]}})
  6. sc '123-z.txt' $($a.keys|sort -desc{[int]$_}|%{$a[$_]|sort -desc{$_.split('_')[1]}})
复制代码
1

评分人数

TOP

  1. <#*,:&cls
  2. @echo off
  3. cd /d "%~dp0"
  4. powershell -C "Set-Location -LiteralPath ([Environment]::CurrentDirectory);. ([ScriptBlock]::Create((Get-Content -LiteralPath \"%~f0\" -ReadCount 0 | Out-String)))"
  5. pause
  6. exit /b
  7. #>
  8. $arrFiles = "123.txt", "23.txt", "3000.txt"
  9. foreach ($itemFile in $arrFiles) {
  10.   try {
  11.     $basename = [system.io.path]::GetFileNameWithoutExtension($itemFile)
  12.     $ext = [System.IO.Path]::GetExtension($itemFile)
  13.     $psoList = (Get-Content -ReadCount 0 -LiteralPath $itemFile -ErrorAction Stop) | Select-Object -Property @{
  14.       Name       = 'Line'
  15.       Expression = { $_ }
  16.     }, @{
  17.       Name       = 'Field2'
  18.       Expression = { ($_ -split '_')[1] }
  19.     }
  20.     $psoList | Sort-Object -Property @{
  21.       Expression = {
  22.         $_.Field2.Length
  23.       }
  24.       Ascending  = $true
  25.     }, @{
  26.       Expression = {
  27.         $_.Field2
  28.       }
  29.       Ascending  = $false
  30.     } | Select-Object -ExpandProperty Line | Set-Content -LiteralPath "${basename}-1${ext}"
  31.     $psoList | Sort-Object -Property @{
  32.       Expression = {
  33.         $_.Field2.Length
  34.       }
  35.       Ascending  = $false
  36.     }, @{
  37.       Expression = {
  38.         $_.Field2
  39.       }
  40.       Ascending  = $true
  41.     } | Select-Object -ExpandProperty Line | Set-Content -LiteralPath "${basename}-a${ext}"
  42.     $psoList | Sort-Object -Property @{
  43.       Expression = {
  44.         $_.Field2.Length
  45.       }
  46.       Ascending  = $false
  47.     }, @{
  48.       Expression = {
  49.         $_.Field2
  50.       }
  51.       Ascending  = $false
  52.     } | Select-Object -ExpandProperty Line | Set-Content -LiteralPath "${basename}-z${ext}"
  53.   } catch {}
  54. }
复制代码
1

评分人数

微信:flashercs
QQ:49908356

TOP

返回列表