Board logo

标题: 不知道是否有将系统8位日期赋值为变量,再有支持通配符? [打印本页]

作者: mws632     时间: 2006-11-26 04:25    标题: 不知道是否有将系统8位日期赋值为变量,再有支持通配符?

不知道是否有将系统8位日期赋值为变量,再有支持通配符?的小巧软件替换原文本中的指定行的旧日期字符串,这样的小巧实用的MS-DOS软件工具?

VARSET不可靠,Xset的日期变量只能六位mm/dd/yy,hexc不支持空格和通配符,change不支持通配符。

都是遍历替换,无指定行替换。
作者: lxmxn     时间: 2006-11-26 19:54

  楼主可否说得详细一点?最好是举个例子。。

作者: mws632     时间: 2006-11-27 05:15    标题: 比如:

比如:将“2006年11月26日”或“2006-11-26”赋值为变量 myvar
再将myvar替换一直文本中的末尾行的左起第16个字符开始的8位旧日期yyyy-mm-dd,这个旧日期事先可能不知道,故需通配符????-??-??来代替它识别字符串。

目前的varset、xset、hexc、change都不能满足。

[ Last edited by mws632 on 2006-11-26 at 04:17 PM ]
作者: redtek     时间: 2006-11-27 06:48
“……末尾行的左起第16个字符开始的……” 也就是说这个文件中8位旧日期的前后左右全都有内容,而且还不是固定的,这本身就有了很大的难度。
(而且,就是Windows CMD Shell上操作都有一部分难度,更何况是纯DOS)

我不知道这个含有旧日期的文件是程序建立的还是如何建立的?


如果在这种不固定的情况下(为了代码操作上的上便),如果上面含有旧日期的文件可以由楼主控置其内容与格式的生成的话,
则代码二次处理这个含旧日期的文件则比较方便。

这可能也是那些工具操作起来麻烦的地方吧~:)
作者: echo     时间: 2006-11-28 04:50
没看明白什么意思,学习
作者: mws632     时间: 2006-11-28 18:49    标题: 其实很简单,也许我没表达清楚:

我在启动软盘中已有一文本文件A.TXT,可用read软件来读的,我想实现每次启动完成再读此篇A.TXT时,文尾的落款日期已自动变成当前日期。

此A.TXT的落款日期“yyyy-mm-dd”随系统日期改变,但落款日期的左右的字符串是固定不变的。

比如:

                                   2006.11.28. 于四川省成都市

仅需改变此行中的日期即可。
作者: redtek     时间: 2006-11-28 23:32
想了几种方法:

) C语言直接编程来直接写你那个要更改日期的 A.TXT 文件中的指定内容,以达到更新,但我菜鸟一个,不会编~:)
  例如: SETDATA.EXE    21  16  2006-11-28      A.TXT
      SETDATA.EXE    21  16  %MYDATE%    A.TXT
  

      以覆盖方式将(x,y座标)新的日期内容写入 A.TXT 文件的(第21行的偏移量从0起的第16个开始的字符处)
  不过,上面的运行于 MS-DOS 下的工具只是我凭空想像应该这样完成一件工作。

  然我没有见到过有人编写过这样的工具(或许存在这样的工具但没有被我们知道),所以上面的理想的方法无法完成:)


) 我也曾希望 MS-DOS 下有这样的工具:
  例如: GETDATA.EXE    21  16  10                 %VAR%     A.TXT
      GETDATA.EXE    21  16  %getNum% %VAR%     A.TXT
      GETDATA.EXE    21  16  10+     %VAR%     A.TXT
      以只读方式读取 A.TXT 中的指定位置:(x,y-第21行的从偏移量0起的第16个字符处)连读10个字符。
      或,取多少个字符由变量 %getNum% 指定。
      或,取多少个字符: 10+  代表右取到行尾
      或,取多少个字符: -10   代表从此位置向左取到行首
      
      将取出的字符串赋值给变量 %VAR%,将来就可以 echo %var% 等方式调用。
  以上只是个人想法,但我不会编写无法实现~:)
 

) 另一种解决方法:

  MS-DOS 下直接使用反汇编工具 Debug 来精确定位你指定的文件 A.TXT 中的第多少个字节处开始(以覆盖方式)写入你指定的内容。
  间接达到(替换操作)的要求。被替换字符串应与替换字符串等长。
  
  实现上面想法理论上可以实现。

) 取系统当前日期:

  理论上 Debug 或是 生成临时文件的方式同样可以实现。
  然后将得到的  %MYDATE% 变量,再使用存有当前日期的 %MYDATE% 变量通过 Debug 来精确写 A.TXT 文件。


) 但是,上面方法走弯路了。

  简单的方法应该是通过一些技巧取到系统日期赋入 %MYDATE% 变量中,
  至于你要显示随时被更改过的那个 A.TXT 文件,可以如下操作:

  ECHO  .......
  ECHO  ..................  第 n 行了...............
  ECHO                  %MYDATE% 于四川省成都市 ................
  ECHO  .......

  即,你那个要随时更动日期的文件内容直接写成批处理可以直接调用的形式 A.BAT
  这样只要一调用  CALL A.BAT 文件,自然就显示了内容又%MYDATE%可以实时替换。
作者: mws632     时间: 2006-12-2 19:48    标题: 思路都好