2009-09-14 186 views
-2

在以下位置 \ ncsusnasent02.na.jnj.com \ its_diq_na_win_dev \的PowerCenter \ infa_shared \ WCPIT_BIO_EDW \ SrcFiles \ DDDMD \ DDD.CLI026.WK0933.DDDMR45.001.head如何使用DOS命令做以下

我有一个文件 DDD.CLI026.WK0933.DDDMR45.001.head

,如果我打开这个文件 我得到的数据如下(在单行)

HEADER0101IMS HEALTHDMD Weekly D  DD.CLI026.WK0933.DDDMR45   Centocor DMDDRM45    [email protected]  
    TRAIL0101 000000000581       0000000000CKSUM000002236804730 

我们需要复制581(它总是不一样的获得此文件

每天更新),并把它放在一个变量

+0

您能否重新解释这个问题,因为它没有意义? – Kane 2009-09-14 12:51:48

+0

@ kane在这里寻找逍遥法外: http://stackoverflow.com/questions/1409565/need-to-create-a-shell-script-or-a-command-in-unix-which-can-do-the -following-pr – 2009-09-14 12:52:53

+0

您需要提供更多信息。 文件是否在同一位置,并且每次都有相同的名称?你怎么知道你需要读哪一位 - 是第9个空白后面的数字,还是总是跟随“TRAIL0101”,还是始终是文件中唯一的12位数字,或者......?尽管如此,对于“纯粹的”DOS命令来说,这是不可能的。您需要安装一些GNU工具并使用sed或类似的工具。如果您向我们提供更多关于您想要达到的成绩的信息,我们可以帮助解决如何实现这一目标。 – Vicky 2009-09-14 12:55:06

回答

3

你可以尝试以下。它会现场将设置环境变量id

for /f "tokens=10" %%a IN (%1) do (
    SET id=%%a 
) 
echo %id% 

可以传递完整的路径和文件名到蝙蝠作为第一个参数。

编辑:

这个简单的蝙蝠会从你在命令行上指定文件(PARAM %1)输入,它将使用的<space><tab>默认分隔打破你的文件中的行 - 定义将IN设置为一组令牌。 "tokens=10"参数告诉处理器将第10个令牌传递到DO块中,该令牌被证明是您正在讨论的数字。它作为参数%%a传入。在DO块中,我只是将该值分配给环境变量id。在for命令完成后,我将该值反馈给控制台。

+0

@akf .......我还没有理解笏你已经做 – Irveen 2009-09-14 13:00:44

0

看看the FOR command,特别是关于/ F参数的部分。

我并不十分了解该行的结构,甚至尝试编写完整的命令,但您应该可以在给出该信息的情况下自行编写它。

0

嗯,对我来说,它看起来更像是人需要一个dos SUBSTR ...即

@Echo Off 

If not %1.==[]. (Cmd /V:On /C Call %0 [] %1 & GoTo :EOF) 

Shift 
Set MyVariable=HELLOWORLD 
Set ASubStr=!MyVariable:~%1! 
Echo [!ASubStr!] 

因此,例如,它保存为test.bat的,然后调用“下的test.bat 5”,它会响应世界

谷歌DOS子字符串,并解决如何解析您的文本变量的方式,你想要它。

+0

不适用na .. ............ nt所需的答案 – Irveen 2009-09-14 13:23:25