[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
第四列为空,文件中有乱码
  1.    9    0.252   m?                                           Baseplate                               Concrete       630.000 300x300x200mm                 
复制代码
1

评分人数

TOP

回复 7# newswan


    谢谢,有很多样本,分列中间只有一个空格,只能按宽度了,这个分列其实比较简单,用cmd也够用了
你的这个我抄不来后面该怎么写,尝试失败

TOP

本帖最后由 jave000 于 2021-8-31 10:56 编辑

回复 5# qixiaobin0715


   谢谢,请问一下
/r /c:"^ 和 /br /c:"  是否没有区别?
“*[1-9][0-9]*”为什么可以表达个位数?我写成“[0-9]?”结果完全是空格……主要是不明白两头的星号表达什么。
并且我把idwma的“*[0-9]*”改成了“*[1-9][0-9]*”,他就不再显示个位数行了,但你的可以,很费解
第一列显示moc922.txt:而不是moc922,请问这个是哪段代码表达的?“%%a in ()”?
整体思路我看明白是把每两个空格改成#,再把“# ”替换为“#”,然后通过#来分割字段,这里好奇,是否已经能将连续的多个#认为是一个#?
发现另一个文本也有错位问题,第一行的二三列分不开,第九行的七八列分不开。能否强制使“ m”分列?
关于过长空格,能否有什么代码可以判断大于某个数量的空格可以认为是一列?
   1    11.3448 m     HW-Beam                                 HW100X100                               St37-1         187.379                              
   2    14      Pcs   A-Plate 16401                           A-Pl16401 200x200x10                    St37-1          43.960                              
   3    1       Pcs   C-Plate 12401                           C-Pl12401_1 240x210x10                  St37-1           3.956                              
   4    4       Pcs   Trägerklemme                            HCS TK                                  St37-1           1.732                              
   5    4       Pcs   Hexagon head bolt                       ISO 4014 - M12x40                       8.8 St           0.256                              
   6    4       Pcs   Hexagon nut                             ISO 4032 - M12                          8.8 St           0.100                              
   7    8       Pcs   Washer                                  ISO 7090-12                             8.8 St           0.048                              
   8    56      Pcs   Duty anchor + HIT-HY150                 HAS M16x125/38                          5.6 St           7.000                              
   9    0.252   m3                                            Baseplate                               Concrete       630.000 300x300x200mm

TOP

本帖最后由 jave000 于 2021-8-31 10:49 编辑

回复 4# idwma


    谢谢,我刚发现其实有第八列remark,不过这个我自己会改了
!str:~118!是否是表达从118往后任意字符?所以不用写几个字符
我把第一个文件名改为*,可以生成,但是列宽全乱了
MOC320.t        xt:   10        4             Pcs   Hexagon head bolt                               ISO 4014 - M12x45                               8.8 S        t               0.276

就感觉在判定列宽时需要提前预留出文件名的名称列宽,但是不知道怎么取消txt后缀以及诡异的冒号
我又尝试了预留第一列列宽,结果后面依然是错位的,需要将实际列宽减少才大部分正确,感觉这个很奇怪

@echo off&setlocal enabledelayedexpansion
(for /f "delims=" %%i in ('findstr /br /c:" *[0-9]" "*.txt"') do (
        set str=%%i
        echo;!str:~0,14!,!str:~14,8!,!str:~22,8!,!str:~30,6!,!str:~36,40!,!str:~76,40!,!str:~116,16!,!str:~132,8!,!str:~140!
))>z-su.csv

TOP

回复 8# qixiaobin0715


   
cmd1152就是个极其活跃的小魔头!

    我无语了呀..................
梦依旧在,只是,心有余而力渐有不足
年年岁岁花相似,岁岁年年人不同

TOP

回复 1# jave000


   
另外请cmd1152不要再在我的网盘空间刷屏了,刷了一个月,真的是怕了

    .............
   
    为什么你的名字:jave000和空间名asaman不一样?
梦依旧在,只是,心有余而力渐有不足
年年岁岁花相似,岁岁年年人不同

TOP

回复 10# qixiaobin0715


    谢谢,懂了

TOP

回复 9# jave000
两个及两个以上的空白字符替换为英文逗号。

TOP

回复 7# newswan


    虽然看了书,但是"\s{2,}",","还是没看懂……

TOP

回复 1# jave000
cmd1152就是个极其活跃的小魔头!

TOP

本帖最后由 newswan 于 2021-8-23 12:46 编辑

如果列内字符串中空格不超过1个
  1. (Get-Content -Encoding utf8 $_ | Select-String -Pattern '^\s+\d') -replace "\s{2,}",","
复制代码
1

评分人数

    • jave000: 虽然看了书,但是"\s{2,}",","技术 + 1

TOP

回复 3# jave000
/c:是findstr命令中的一个参数,而不是路径。参见:
http://bbs.bathome.net/thread-14682-1-1.html
1

评分人数

TOP

回复 1# jave000
不用字符宽度的话,可以牵强的这么处理:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "tokens=*" %%i in ('findstr /br /c:" *[1-9][0-9]* " MOC922.txt') do (
  4.     set "str1=%%i"
  5.     set "str1=!str1:  =#!"
  6.     for /f "tokens=1-7 delims=#" %%a in ("!str1:# =#!") do echo,%%a,%%b,%%c,%%d,%%e,%%f,%%g
  7. ))>1.csv
  8. pause
复制代码
但是会带来一些问题,比如17行由于第4列为空白,就会导致后面各列依次前移。
1

评分人数

    • jave000: 路径是全C盘?技术 + 1

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%b in ('findstr /r /c:"^ *[0-9]" "MOC922.txt"') do (
  3. set str=%%b
  4. echo;!str:~0,8!,!str:~8,8!,!str:~16,6!,!str:~22,40!,!str:~62,40!,!str:~102,16!,!str:~118!
  5. ))>>MOC922.txt.csv
  6. pause
复制代码
1

评分人数

TOP

本帖最后由 jave000 于 2021-8-20 14:34 编辑

回复 2# Batcher


    公司电脑也打不开任何网盘的网址。我晚些还是把附件发给家里电脑,晚上再传。

TOP

返回列表