你可以使用你想追加的文字,後面跟着你的變量。
C:\>set MY_VAR=Hello world!
C:\>echo #%MY_VAR%
#Hello world!
C:\>set MY_VAR=#%MY_VAR%
C:\>echo %MY_VAR%
#Hello world!
如果你只是在做回聲,那很好。 echo #%%j
會做你所需要的。
但是,如果要將行設置爲變量,則必須使用enable delayed expansion。將setlocal ENABLEDELAYEDEXPANSION
添加到文件的頂部,然後用!
而不是%
來包圍變量。例如(和通知,我已經添加了delims=
把整條生產線在%%j
而不是第一個字就行了):
@echo off
setlocal ENABLEDELAYEDEXPANSION
set LINE=
for /f "delims=" %%j in (CMakeLists.txt) do (
set LINE=%%j
if "%%j"=="Extensions AntTweakBar" (
set LINE=#%%j
)
if "%%j"=="Extensions Inspection" (
set LINE=#%%j
)
if "%%j"=="Extensions InspectionBar" (
set LINE=#%%j
)
echo !LINE!
)
鑑於此輸入文件:
Extensions AntTweakBar
some text
Extensions Inspection
Extensions What?
some more text
Extensions InspectionBar
Extensions InspectionBar this line doesn't match because delims= takes all text
even more text
上述腳本產生此輸出:
C:\>comment.bat
#Extensions AntTweakBar
some text
#Extensions Inspection
Extensions What?
some more text
#Extensions InspectionBar
Extensions InspectionBar this line doesn't match because delims= takes all text
even more text
並且當然刪除@echo off
將幫助您調試問題。
但是所有這一切都說明了,你所處的極限可以通過批處理字符串處理完成。如果您仍想使用批處理命令,則可能需要開始將行寫入臨時文件,並使用findstr
和正則表達式。
它可以在蝙蝠完成...但你爲什麼選擇它? – 2010-11-17 22:23:11
您能否提供一個示例文件,以便我們可以看到是否存在需要保留的任何文本格式,即空行,縮進等......或者您能否確定地說明這不是我們需要關注的問題? – 2010-12-19 22:35:56
這可以很容易地在普通的舊DOS中完成。我已經做了1000次,如果不是更多。我今天晚上會回到這個問題 - 聖誕節即將來臨! – 2010-12-19 12:49:39