2012-08-16 32 views

回答

1

我不完全確定你在做什麼...我假設你想解析文件hi.txt並拔出變量(A,b,C)和數字,他們等於..

 
@echo off 
setlocal ENABLEEXTENSIONS 

for /f "tokens=1,2 delims==" %%i in (hi.txt) do (
    echo %%i has value %%j 
) 

這將輸出

 
a has value 23 
b has value 56 
c has value 89 

看到,如果你需要更多的信息 「幫忙」。

另外請注意,我的例子是解析=號,所以每個變量的寬度都不重要。你可以有一行像「MyText = 100」,它也可以工作。你的〜0,1假設每個值只有1個字符寬。

我希望這會有所幫助。

+0

爲了防萬一有人做了一個看起來像'a = b = c'的變量,你的代幣會錯過其餘的行。將它改爲'tokens = 1 *',並且您在第一個'='後面的所有內容%% j – SeanC 2012-08-16 21:11:21

+0

非常感謝您 – 2012-08-17 04:08:33

+0

我想問我是否想 – 2012-08-17 04:13:46

1

如果你只需要打印一行的第一個字符,那麼下面的腳本應該可以工作。我相信你的原始問題可能是延遲變量擴展。有關更多信息,請參閱「help setlocal」和「help set」。

該版本的腳本將每行讀入一個temp變量,並將第一個字符剪切到另一個名爲firstCharacter的變量中。 !!用於CMD腳本的延遲變量擴展功能。

 
    @echo off 
    setlocal ENABLEEXTENSIONS,ENABLEDELAYEDEXPANSION 

    for /f %%i in (hi.txt) do (
     set wholeLine=%%i 
     set firstCharacter=!wholeLine:~0,1! 
     echo First Character is !firstCharacter! 
    ) 

    endlocal 

,輸出爲...

 
First Character is a 
First Character is b 
First Character is c 

我沒能找到一種方法,使用%%我直接對於這一點,因此臨時變量wholeLine。爲了清晰起見,我添加了變量firstCharacter,但它不需要存在就可以工作。我可以迴應!wholeLine:〜0,1!直。

玩得開心。

相關問題