這很可能是一個非常簡單的問題,但在這裏。使用查找/替換公式
我需要搜索以一定的順序對數字的文件,再加入5到每個數/ 例:
時間小時:1,ST:2,PS:10(就是我要尋找爲 - 會出現在整個文件中各種其他號碼)
我想它與+5
時間小時更換號碼:6,ST:7,PS:15
這很可能是一個非常簡單的問題,但在這裏。使用查找/替換公式
我需要搜索以一定的順序對數字的文件,再加入5到每個數/ 例:
時間小時:1,ST:2,PS:10(就是我要尋找爲 - 會出現在整個文件中各種其他號碼)
我想它與+5
時間小時更換號碼:6,ST:7,PS:15
批處理不是文本處理的最佳選擇,特別是作爲補償的東西lex作爲您的要求。使用JScript,VBScript或PowerShell可以簡單得多。但它可能與批處理...
沒有任何簡單的批處理命令,可以做你想做的。你必須編寫你自己的代碼來讀取每一行,如果它不符合格式,請不要改變。如果它與格式匹配,則解析該行以提取數字,使用SET/A遞增它們,並寫出新行。
你不能直接修改你的文件。相反,您必須寫入臨時文件。完成後,將臨時文件移至原始名稱。
我會假設感興趣的格式化文本沒有嵌入到較大的行中。
您不指示文件中的其他內容。空行和感嘆號可能會導致問題。我假設他們可能在場,所以如果他們不是,那麼代碼會比需要的複雜得多。
我使用FINDSTR/N爲每行插入一個行號前綴來保護空行。在將行寫入新文件之前,必須先剝離該前綴。
感嘆號通過在循環中打開和關閉延遲擴展來保護。如果在擴展FOR變量時啓用延遲擴展,那麼如果它包含感嘆號,則該值將被破壞。
@echo off
setlocal disableDelayedExpansion
>"yourFile.txt.new" (
for /f "delims=" %%L in ('findstr /n "^" "yourFile.txt"') do (
for /f "delims=:, tokens=1-7*" %%A in ("%%L") do (
if "%%B %%D %%F%%H" equ "time hr st ps" (
set /a "hr=%%C+5, st=%%E+5, ps=%%G+5"
setlocal enableDelayedExpansion
echo time hr:!hr!,st:!st!,ps:!ps!
endlocal
) else (
set "ln=%%L"
setlocal enableDelayedExpansion
echo(!ln:*:=!
endlocal
)
)
)
)
::move /y "yourFile.txt.new" "yourFile.txt" >nul
type yourFile.txt.new
好的,謝謝,我會玩那個。 – cjh7103 2014-10-28 11:29:19