返回列表 发帖
回复 15# LJY4.0


    我也不太懂,估计是个二进制的dat

TOP

回复 15# LJY4.0
刚才查了一下说是float类型;
    单纯的4字节浮点类型

TOP

可能是编码问题,转换编码问题可从论坛里搜索。
qixiaobin0715 发表于 2022-7-29 12:15



    老师,生成的dat是浮点格式的,麻烦您弄一下

TOP

回复 2# 领航


请找一个你的通信软件可以识别的dat文件作为例子。
如果需要上传文件,可以用阿里云盘或百度网盘。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 19# Batcher

这个可以被读取
    https://wwn.lanzout.com/iM6nj08oj3xi

TOP

回复 20# 领航


文件里没有1,2列
只有3和4列,32位按小端排序

TOP

本帖最后由 flashercs 于 2022-7-31 18:19 编辑
<#*,:&cls
@echo off
cd /d "%~dp0"
powershell -C "Set-Location -LiteralPath ([Environment]::CurrentDirectory);. ([ScriptBlock]::Create((Get-Content -LiteralPath \"%~f0\" -ReadCount 0 | Out-String)))"
pause
exit /b
#>
$txtpath = "c:\txt\a.txt"
$dirdata = "c:\news\1001"
$dicDataPath = @{}
$rootdir = [System.IO.Directory]::CreateDirectory($dirdata)
foreach ($line in (Get-Content -LiteralPath $txtpath -ReadCount 0)) {
  if ($line -match '^\s*$') {
    continue
  }
  $a, $b, $c, $d = $line -split '\|'
  $datapath = [System.IO.Path]::Combine($rootdir.FullName, "${a}_${b}.dat")
  if (-not $dicDataPath.ContainsKey($datapath)) {
    $dicDataPath[$datapath] = 1
    $filemode = [System.IO.FileMode]::Create
  } else {
    $filemode = [System.IO.FileMode]::Append
  }
  try {
    $stream = New-Object System.IO.FileStream -ArgumentList @($datapath, $filemode, [System.IO.FileAccess]::Write, [System.IO.FileShare]::Read)
    $bw = New-Object System.IO.BinaryWriter -ArgumentList $stream
    $bw.Write($c -as [int])
    $bw.Write($d -as [float])
  } finally {
    if ($bw) {
      $bw.Close()
      $bw = $null
    }
    if ($stream) {
      $stream.Close()
      $stream = $null
    }
  }
  trap {}
}COPY
1

评分人数

微信:flashercs
QQ:49908356

TOP

回复 22# flashercs

请老师看看,
方法调用失败,因为 [System.String] 不包含名为“IsNullOrWhiteSpace”的方法。
所在位置 行:12 字符: 35
+   if ([string]::IsNullOrWhiteSpace <<<< ($line)) {
    + CategoryInfo          : InvalidOperation: (IsNullOrWhiteSpace:String) []
   , RuntimeException
    + FullyQualifiedErrorId : MethodNotFound

方法调用失败,因为 [System.IO.BinaryWriter] 不包含名为“Dispose”的方法。
所在位置 行:24 字符: 18
+       $bw.Dispose <<<< ()
    + CategoryInfo          : InvalidOperation: (Dispose:String) [], RuntimeEx
   ception
    + FullyQualifiedErrorId : MethodNotFound

TOP

回复 21# idwma


    不会弄,请老师帮助

TOP

flashercs 发表于 2022-7-30 18:13


请除了那个报错,
  请问老师,如何解决增量问题
下面的内容中,日期和数量有变化,如何补充到对应的dat文件中呢?

0|000821|20220725|42156
0|002204|20220725|3332832
1|603982|20220725|735065

TOP

本帖最后由 flashercs 于 2022-7-30 22:47 编辑

回复 25# 领航


    楼上代码修复了错误,你试试.
日期更新的 行 放到a.txt 下面,会替换原来的文件.
如:
1|603982|20220722|39200819
1|603982|20220725|735065COPY
下行会替换上行数据.
微信:flashercs
QQ:49908356

TOP

本帖最后由 领航 于 2022-7-31 12:39 编辑

回复 26# flashercs


    谢谢老师修正!
现在的问题是解决增量问题;
b.txt内容
0|000821|20220725|42156
0|002204|20220725|3332832
1|603982|20220725|735065

当b.txt日期和数量发生变化,如何补充到对应的dat文件中呢?不是替换覆盖,是增量
当日期相同的时候,可以替换覆盖
当日期不同的时候,在dat里面增补一条记录


附件例子是多条记录:https://wwn.lanzout.com/imzg808q4jyh

TOP

回复 27# 领航


    修改了增量问题.你需要测试一下
微信:flashercs
QQ:49908356

TOP

本帖最后由 领航 于 2022-7-31 17:16 编辑

回复 28# flashercs


    经测试可增补,但存在软件读取不到问题,怀疑与附件的datacfg.dat这个文件有关联,可能是每次增补一次数据,就向datacfg.dat这个文件补充一条记录,我打不开datacfg.dat这个文件,特发附件请老师分析解决
https://wwn.lanzout.com/iYlXa08r1lyh

TOP

回复 29# 领航


    不知道datacfg.dat的数据是什么格式.无法判断原因
微信:flashercs
QQ:49908356

TOP

返回列表