Board logo

标题: [文本处理] [已解决]批处理根据文本内容输出对应内容? [打印本页]

作者: czvde    时间: 2022-5-30 11:44     标题: [已解决]批处理根据文本内容输出对应内容?

123.txt:
abcabc,111
cc,0123

abc.txt:
abcabc_abcdef
cc_0123abcd

输出a.txt:
111+ABC.abcdef
0123+ABC.0123abcd

已解决!
作者: flashercs    时间: 2022-5-30 13:28

本帖最后由 flashercs 于 2022-5-30 14:10 编辑
  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. $file1 = "123.txt"
  9. $file2 = "abc.txt"
  10. # 格式化字符串
  11. $format = '{0}+ABC.{1}'
  12. $ht = @{}
  13. foreach ($line in (Get-Content -ReadCount 0 -LiteralPath $file1)) {
  14.   $k, $v = $line -split ',', 2
  15.   $ht[$k] = $v
  16. }
  17. $(foreach ($line in (Get-Content -ReadCount 0 -LiteralPath $file2)) {
  18.     $k, $v = $line -split '_', 2
  19.     if ($ht.ContainsKey($k)) {
  20.       $format -f ($ht[$k]), $v
  21.     }
  22.   }) | Set-Content -LiteralPath .\a.txt
复制代码

作者: Batcher    时间: 2022-5-30 14:22

回复 1# czvde


请参考Q-04和Q-05把bat文件和txt文件都保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
  1. @echo off
  2. cd /d "%~dp0"
  3. setlocal enabledelayedexpansion
  4. for /f "tokens=1-2 delims=," %%i in ('type "123.txt"') do (
  5.     set "%%i=%%j"
  6. )
  7. (for /f "tokens=1-2 delims=_" %%i in ('type "abc.txt"') do (
  8.     if defined %%i (
  9.         echo !%%i!+ABC.%%j
  10.     )
  11. ))>"a.txt"
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2