[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
相同跟不同这种描述看着挺懵的,换成有相同和没有相同感觉清楚多了

日期和时间分秒有相同的, 并且其第5和6列字段含有指定字符串,则排列(根据指定的顺序)
日期和时间分秒没有相同的,或者其第5和6列字段含没有指定字符串,则不排列

也就是按顺序从文件读入一行,然后看"有没有"跟这一行"相同"的其余行
额,好像很复杂,brain不好使,写不出code来

TOP

回复 4# 娜美

我脑子不好,解决不了

TOP

脑子不好又不是换个编码就能解决的,gawk不会弄,弄不出来,但是用powershell弄出来了

input.txt是输入文件
output.txt是输出文件
ansi是编码,可以换成utf8,utf16le,utf16be
  1. #@&cls&pause&powershell "gc -literalpath '%~f0'|out-string|iex"&pause&exit
  2. $inf="input.txt"
  3. $otf="output.txt"
  4. $cod="ansi"
  5. $sList=@{
  6. "公司"=1;
  7. "企业"=2;
  8. "名称"=3;
  9. "货号"=4;
  10. "编号"=5;
  11. "品类"=6
  12. }
  13. $s="公司|企业|名称|货号|编号|品类"
  14. $inf=$pwd.path+"\"+$inf
  15. $otf=$pwd.path+"\"+$otf
  16. $thecod=@{
  17. "ansi"=[text.encoding]::Default;
  18. "utf8"=[text.encoding]::UTF8;
  19. "utf16le"=[text.encoding]::Unicode;
  20. "utf16be"=[text.encoding]::BigEndianUnicode
  21. }
  22. $a=[io.file]::ReadAllLines($inf,$thecod[$cod])
  23. $b=[System.Collections.ArrayList]::new()
  24. $c=[System.Collections.ArrayList]::new()
  25. (0..($a.Length-1)).ForEach({
  26. if($a[$_] -and ($a[$_] -match $s)){[void]$b.add(@($_,$a[$_]))}
  27. elseif($a[$_]){[void]$c.add(@($_,$a[$_]))}
  28. })
  29. if(!$b -and !$c){exit}
  30. $aa=[io.file]::OpenWrite($otf)
  31. $aaa=[System.IO.StreamWriter]::new($aa,$thecod[$cod])
  32. if($b){$d=[object[]]($b|group {$_[1].split(' ')[0,3] -join ''})}
  33. $e=[object[]]($d|?{$_.count -gt 1})
  34. if($e){
  35. (0..($e.Count-1)).ForEach({
  36. $e[$_].Group|sort {$tmp=[regex]::Match($_[1],$s).value;$sList[$tmp]},{$_[0]}|%{$aaa.writeline($_[1])}
  37. $aaa.WriteLine()
  38. })
  39. }
  40. $e=[object[]]($d|?{$_.count -eq 1})
  41. if($e){(0..($e.Count-1)).ForEach({[void]$c.add(@($e[0].group[$_][0],$e[0].group[$_][1]))})}
  42. if($c){$c|sort {$_[0]}|%{$aaa.WriteLine($_[1])}}
  43. $aaa.close()
复制代码

TOP

回复 8# 娜美


    输出的文件是output.txt,只要输入文件input.txt不是空的都会有输出文件跟内容吧,运行后仔细找找看有没有output.txt,

TOP

回复 9# Five66

代码默认输入文件编码是ansi,如果输入文件不是ansi编码的,可以试试修改输入文件编码 或者 修改代码 第5行,将那里得ansi改成utf8或者utf16le或者utf16be

TOP

回复 11# 娜美

不可能啊,bat或者cmd都应该有输出啊,除非你的系统是win7并且路径中有方括号([,])

TOP

回复 13# 娜美

你用bat再次试试?

TOP

返回列表