2012-09-12 14 views
2

我迄今爲止代碼:我似乎無法得到這個字符串批量循環,我只能得到一行輸出。

for /F "tokens=*" %%A in (#opm.txt) do set str=%%A 
set str=%str:~0,3% 
@echo.%str% > #tags.txt 

基本上,我有一個巨大的東西,我試圖採取從的前三個字母列表,但是,我只是最終得到的這些東西一個從列表中正確現在。例如:

單詞'eagle'在名單上。最終結果應該是EAG(最好是大寫)。

任何提示?

回答

1

如果你想要做一個以上的語句在for循環中,你需要使用括號:

for /F "tokens=*" %%A in (#opm.txt) do ( 
    set str=%%A 
    set str=%str:~0,3% 
    @echo.%str% > #tags.txt 
) 

注意,打開支架在同一行作爲... ...做陳述。在這種情況下,你需要使用延遲擴展來操縱循環內的變量(這使得封閉與感嘆號變量到位解決):

@setlocal ENABLEDELAYEDEXPANSION 

for /F "tokens=*" %%A in (#opm.txt) do ( 
    set str=%%A 
    set str=!str:~0,3! 
    @echo.!str! >> #tags.txt 
) 

@endlocal 

也請注意,重定向的語法改爲從>>> 。每次執行語句時,單個括號重定向將覆蓋#tags.txt。雙括號重定向在文件末尾附加行(您可能希望確保文件在循環之前爲空)。

無需外部工具,批量替換字母的大小寫相當複雜。這不是一個文本處理友好的技術。你有沒有考慮Python而不是?

+0

我正在嘗試學習批處理,而我的這個小項目,所以Python是不是一個真正的選擇。但是,這是完美的!感謝您的洞察力。 – JuniorD

相關問題