2011-07-06 79 views
0

我在很短的時間,我期待創造一個非常簡單的批處理腳本,將:簡單批量搜索和替換腳本

1)在同一目錄重命名另一個文件中的字符串(文件名是已知) 實施例:將 「[replace_me_with_path_to_second_file]」 與first_file.txt 「current_working_directory/second_file.txt」

2)打開/執行該文件 「first_file.txt」

3)靠近

由於提前!

+1

開始時的問題»我時間不多«...僅僅是一個代碼短語»我懶得自己尋找解決方案,而讓別人解決我的問題«? – Joey

+0

您的時間不足可能會暫時降低您自己找到優質解決方案的能力。然而,通過暗示你受到時間的限制,你實際上將我們置於相同的限制之下,我認爲這有點不切實際。 –

+0

,甚至不打擾評論以前的評論,或給予答案的功勞,真的使你懷疑你對你的問題的真正興趣。 –

回答

0

如果您對正則表達式感到滿意,這對於sed來說是一項完美的工作。 Sed使用'/'作爲表達式與其替換之間的分界符,所以你應該在文件路徑中轉義任何斜槓。要使用你的例子:

sed -i 's/replace_me_with_path_to_second_file/current_working_directory\/second_file.txt/' first_file.txt 
+0

請注意,'cmd'不使用'''來引用...... – Joey

0

感謝Alberge,我希望發現將不需要的sed,因爲此批處理文件將下載的文件中在Windows環境中使用,以簡化配置的解決方案。但看起來我必須打包它:http://gnuwin32.sourceforge.net/packages/sed.htm

至於其他人,協作問題/答案目錄的整個前提意味着提出問題的人是: 1)無法找到2)準時不足,正在尋求那些在主題方面有更多經驗或知識的人的建議。

批評我說我在問一個問題,因爲我受到時間的限制有點粗魯。


原來,這裏有點重,所以我發現這個有用的和緊湊的VBS腳本sed的依賴關係(DLL)的效仿S/R - 在這裏Is there any sed like utility for cmd.exe

我會重新發布它:

Dim pat, patparts, rxp, inp 
pat = WScript.Arguments(0) 
patparts = Split(pat,"/") 
Set rxp = new RegExp 
rxp.Global = True 
rxp.Multiline = False 
rxp.Pattern = patparts(1) 
Do While Not WScript.StdIn.AtEndOfStream 
inp = WScript.StdIn.ReadLine() 
WScript.Echo rxp.Replace(inp, patparts(2)) 
Loop 

而且我完成的批處理腳本:

@echo off 

set full_path=%CD%\file_1.txt 
set input_file=file_2.txt 
set output_file=file_2.txt 

set str_search=FIND_ME 
set str_replace=%full_path% 

if not exist "%full_path%" (echo this file does not exist...)&goto :eof 

cscript //nologo sed.vbs s/%str_search%/"%str_replace%"/ <%input_file% >%output_file% 

就像一個魅力: )