2009-09-14 183 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