是否有相当于Windows cmd.exe(或其他XP标准工具)中的’cut -c’?

前端之家收集整理的这篇文章主要介绍了是否有相当于Windows cmd.exe(或其他XP标准工具)中的’cut -c’?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一些固定行大小的文件,固定字段大小,我需要从中提取信息. Nornmally,我使​​用Cygwin(cut et al),但在这种情况下,由于(愚蠢的)管理策略我无法改变,因此不是一个选项.必须使用 @L_404_0@附带的标准XP工具集完成.

我需要在偏移量22(从零开始)提取偏移量为7和4个字符的10个字符,然后将它们输出文件中,但稍微扭曲:

>第一个字段可能有负号,正号或无符号(在开头或结尾).标志应该移到前面,如果是正面则完全移除.
>第二个字段应删除前导和尾随空格.

例如:

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<
如果使用现代窗口,本机不限于cmd.exe命令,可以使用vbscript.如果你的政策也不使用vb​​script,那么我猜你应该解雇你的管理:)
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

基本上,要“剪切”字符串的字符,可以使用Mid()函数.请查看vbscript documentation以了解更多信息.

将上面保存为test.vbs,并在命令行上执行

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

当然,“substring”也可以用纯cmd.exe来完成,但我会把它留给其他人来指导你.

由Pax更新:根据这个答案,我想出了以下这将是一个良好的开端:

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

这符合我们的所有要求.我们可以稍后将偏移量和长度转换为命令行参数.

结束更新.

原文链接:https://www.f2er.com/windows/365450.html

猜你在找的Windows相关文章