2014-02-23 203 views
0

想要使用批處理文件命令替換文本文件「list.txt」中的某些字符串。使用批處理文件命令替換字符串

我想用「adb install C:\」在Windows中使用一些批處理文件命令替換文件「list.txt」中的C:\。

,並刪除含有‘LIST.TXT’

名爲「.txt」文件,在linux我用grep命令

做這個如何做到這一點的線?

+0

你可以得到的標準工具端口[的GnuWin32(http://gnuwin32.sourceforge.net/)和使用grep或sed的就像你在Linux上。如果你想使用本地工具,這篇文章有你的答案:https://stackoverflow.com/questions/60034/how-can-you-find-and-replace-text-in-a-file-using-the -windows-command-line-envir?rq = 1 – jpw

+0

有幾個用於Windows的unix commnadline實用程序的端口,例如這裏:http://gnuwin32.sourceforge.net/packages.html)。另一種選擇是使用SwissFileKnife:http://sourceforge.net/projects/swissfileknife/ –

+0

這裏是替換部分的一些解決方案:http://stackoverflow.com/questions/60034/how-can-you-find-and-替換文本使用Windows的命令行envir rq = 1爲了刪除特定字符串的行,findstr/v是非常有用的。 – Stephan

回答

0

嘗試使用以下

for /f "usebackq delims=." %x in (`findstr C:\ list.txt`) do echo adb install %x 

FOR/F將摘掉LIST.TXT之一的內容在時間

delims =。首先停下來。缺點是,如果有兩個。在文件名中,它只停留在第一個。

+0

你假設的東西還沒有透露有關源文件。此外,帶有'.txt'的行將被移除AIUI。 – foxidrive

+0

這不是一個完美的解決方案,但它可以幫助操作人員執行所需的操作。 – cup

0

試試這個:

@ECHO OFF &SETLOCAL disableDelayedExpansion 
SET "inFileName=infile.txt" 
SET "outFileName=outfile.txt" 
(FOR /f "delims=" %%a IN ('FINDSTR /n "^" "%FileName%"') DO (
    SET "PrimLine=%%a" 
    SETLOCAL enableDelayedExpansion 
    SET "Line=!PrimLine:*:=!" 
    SET "Line=!Line:C:\=adb install C:\!" 
    IF "!Line:txt=!"=="!Line!" ECHO(!Line! 
    ENDLOCAL 
))>"%outFileName%"