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

回复 30# aloha20200628
  1. powershell "gc *.txt -readcount 1000 -enc 'utf8'|ac 'all.tmp'"
复制代码
我套不进去,   脑壳不够用

TOP

本帖最后由 aloha20200628 于 2024-5-15 17:28 编辑

回复 31# 娜美

管道是效率大杀器尤其是对大数据,尽量不用...
  1. @echo off &setlocal &del /q "allinOne.txt" "bug.txt" 2>nul
  2. for /f "delims=" %%F in (b.txt) do if not exist "%%~F" (echo,"badFile -- %%F"&echo,%%F>>"bug.txt") else (
  3. for /f "tokens=1 delims=_" %%a in (' coder.exe -s -a gc -f "%%~F" ') do (
  4. echo, /// %%~F ///>>"allinOne.txt"
  5. if /i "%%a"=="utf-8" (
  6. powershell "$s=gc '%%~F' readcount 1000 -enc 'utf8';ac 'allinOne.txt' $s"
  7. ) else if /i "%%a"=="utf-16" (
  8. powershell "$s=gc '%%~F' readcount 1000 -enc 'unicode';ac 'allinOne.txt' $s"
  9. ) else if /i "%%a"=="ansi" (more "%%~F">>"allinOne.txt")
  10. )
  11. echo,>>"allinOne.txt"
  12. )
  13. endlocal&pause&exit/b
复制代码

TOP

本帖最后由 娜美 于 2024-5-15 19:53 编辑

回复 32# aloha20200628

有问题,  只合并了ANSI编码文本,  UTF8  UTF16编码文本一个都没有被合并进去
似乎是这2 powershell写法原因

powershell "$s=gc '%%~F' readcount 1000 -enc 'utf8';ac 'allinOne.txt' $s"
powershell "$s=gc '%%~F' readcount 1000 -enc 'unicode';ac 'allinOne.txt' $s"


似乎是读取变量文件和ac问题
$s=gc '%%~F' readcount 1000

TOP

回复 33# 娜美

为何从[io:file]高效方法回退管道模式呢

TOP

本帖最后由 娜美 于 2024-5-15 21:13 编辑

回复 34# aloha20200628

[io:file] 依靠内存模式
虽然也快  但抑制不了内存挤满问题




[io:file] 逐行读取模式   
速度4mb/s左右


速度30mb/s左右, 肯定是最快最佳方案,  但是代码套不进去
powershell "gc *.txt -readcount 1000 -enc:'default' | ac -enc:default 'all.tmp'"

另外more 也有些问题,要弃用, 大一点100mb文件会卡住不动

-- More (0%) --

TOP

回复 35# 娜美

用以下5行代码替换32楼代码中的5-9行,再试吧...
  1. if /i "%%a"=="utf-8" (
  2. powershell " gc '%%~F' readcount 1000 -enc 'utf8'|ac 'allinOne.txt' "
  3. ) else if /i "%%a"=="utf-16" (
  4. powershell " gc '%%~F' readcount 1000 -enc 'unicode'|ac 'allinOne.txt' "
  5. ) else if /i "%%a"=="ansi" (powershell " gc '%%~F' readcount 1000|ac 'allinOne.txt' ")
复制代码

TOP

本帖最后由 娜美 于 2024-5-15 23:32 编辑

回复 36# aloha20200628
大哥哥32楼那个可以了
大哥哥请看看  套进这个里面 似乎返回一些错误
  1. @echo off &setlocal &del /q "allinOne.txt" "bug.txt" 2>nul
  2. for /f "delims=" %%F in (b.txt) do if not exist "%%~F" (echo,"badFile -- %%F"&echo,%%F>>"bug.txt") else (
  3. for /f "tokens=1-2 delims=-" %%a in (' uchardet.exe "%%~F" ') do (
  4. if /i "%%a" neq "unknown" (echo, /// %%~F ///>>"allinOne.txt")
  5. if /i "%%a"=="utf" if "%%b"=="8" (
  6. powershell " gc '%%~F' -readcount 1000 -enc 'utf8'|ac 'allinOne.txt' "
  7. ) else if /i "%%a"=="utf" if "%%b"=="16" (
  8. powershell " gc '%%~F' -readcount 1000 -enc 'utf16'|ac 'allinOne.txt' "
  9. )
  10. if /i "%%a"=="ascii" (
  11. powershell " gc '%%~F' -readcount 1000 -enc 'ascii'|ac 'allinOne.txt' "
  12. ) else if /i "%%a"=="gb18030" (
  13. powershell " gc '%%~F' -readcount 1000 -enc 'default'|ac 'allinOne.txt' "
  14. ) else if /i "%%a"=="unknown" (
  15. echo,"unknown -- %%F"&echo,%%F>>"bug.txt"
  16. )
  17. )
  18. echo,>>"allinOne.txt"
  19. )
  20. endlocal&pause&exit/b
复制代码
  1. Get-Content : 无法绑定参数“Encoding”。无法将值“utf16”转换为类型“Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding”。错误:“无法将标识符名称 utf16 与有效的枚举器名称相匹配。请指定以下枚举器名称之一,然后重试:
  2. Unknown, String, Unicode, Byte, BigEndianUnicode, UTF8, UTF7, UTF32, Ascii, Default, Oem, BigEndianUTF32”
  3. 所在位置 行:1 字符: 47
  4. +  gc 'UTF16BE-UNIX编码.txt' -readcount 1000 -enc 'utf16'|ac 'allinOne.tx ...
  5. +                                               ~~~~~~~
  6.     + CategoryInfo          : InvalidArgument: (:) [Get-Content],ParameterBindingException
  7.     + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.GetContentCommand
复制代码

TOP

回复 37# 娜美

37楼代码第8行改为下行即可...
  1. powershell " gc '%%~F' -readcount 1000 -enc 'unicode'|ac 'allinOne.txt' "
复制代码

TOP

回复 38# aloha20200628


   噢,真晕呀,我竟然没注意到这个,可能试多了晕了吧。好了,追求得到完满结束,多谢大哥哥哈

TOP

返回列表