代码之家  ›  专栏  ›  技术社区  ›  paxdiablo

在windows cmd.exe中是否有与“cut-c”等效的代码?

  •  9
  • paxdiablo  · 技术社区  · 15 年前

    我有一些固定行大小、固定字段大小的文件,需要从中提取信息。通常,我会用Cygwin( cut 但在这种情况下,这不是一个选择,因为我不能改变(愚蠢的)管理政策。它 使用Windows附带的标准XP工具集完成。

    我需要在偏移7处提取10个字符,在偏移22处提取4个字符(以零为基础),然后将它们输出到一个文件中,但要稍微扭曲一下:

    • 第一个字段可能有负、正或无符号(在开始或结束处)。标志应移到前面,如果是正面的,则应完全移除。
    • 第二个字段应删除前导空格和尾随空格。

    例如:

              1         2         3          <- ignore (these lines not in file,)
    0123456789012345678901234567890123456789 <- ignore ( here only for info.)
    xxxxxxx    15.22-yyyyyABCDzzzzzzzzzzz...
    xxxxxxx   122.00+yyyyy XX zzzzzzzzzzz...
    xxxxxxx         9yyyyyYYY zzzzzzzzzzz...
    

    应该生产( < 表示行尾):

    -15.22,ABCD<
    122.00,XX<
    9,YYY<
    
    3 回复  |  直到 6 年前
        1
  •  7
  •   paxdiablo    15 年前

    Set objFS=CreateObject("Scripting.FileSystemObject")
    strFile = "c:\test\file"
    Set objFile = objFS.OpenTextFile(strFile)
    strFirstLine = objFile.ReadLine
    Do Until objFile.AtEndOfStream
        strLine= objFile.ReadLine
        var1 = Mid(strLine,10) ' do substring from position 10 onwards
        ' var2 = Mid (strLine,<pos>,<length>) ' get next offset and save to var2
        WScript.Echo var1 & var2  ' print them out.
    Loop
    

    vbscript documentation

    c:\test> cscript /nologo test.vbs > newfile
    

    option explicit
    dim objFs, objFile, strLine, value1, value2
    
    if wscript.arguments.count < 1 then
        wscript.echo "Usage: process <input-file>"
        wscript.quit
    end if
    
    set objFs=createObject("Scripting.FileSystemObject")
    set objFile = objFs.openTextFile(wscript.arguments.item(0))
    do  until objFile.atEndOfStream
        strLine= objFile.readLine
        value1 = trim(mid(strLine, 8, 10))
        value2 = trim(mid(strLine, 23, 4))
        if right(value1,1) = "-" then value1 = "-" & left(value1,len(value1)-1)
        if right(value1,1) = "+" then value1 = left(value1,len(value1)-1)
        if left(value1,1) = "+" then value1 = mid(value1,2)
        wscript.echo value1 & "," & value2
    loop
    

        3
  •  2
  •   Community CDub    8 年前

    @echo off
    setlocal
    set key=HKCU\Software\Microsoft\Windows\CurrentVersion\Ext\Stats\{D27CDB6E-AE6D-11CF-96B8-444553540000}\iexplore\AllowedDomains
    
    echo.
    echo Liste der fuer Flash im IE zugelassenen Domaenen:
    echo =================================================
    for /f "usebackq tokens=11 delims=\" %%l in (`call reg query "%key%" /s`) do echo. %%l
    echo.
    endlocal
    

    tokens=11 AllowedDomains

    for /? cmd.exe

    been around since at least 2001 Flash, which I prefer to block by default