2016-05-25 103 views
0

最佳用户,通过批量删除文本文件中的特定单词

我想制作一个批处理脚本,删除txt文件中的特定单词。 我用下面的,但它没有工作

(脚本,我使用):

SET /p word=device 
FOR /f "delims=" %%a IN ('dir /a-d /b "Input_%date%.txt"') DO (
SET "fname=%%~na" 
SET "fname=!fname:%word%=!"' 
IF NOT "!fname!"=="" REN "%%~a" "!fname!%%~xa" 

(输入_%日期%.TXT):

1015faf2da091b02 device 
1115fbd4e0dd3b03 device 

我要删除在每一行中都有“设备”字样。

任何人都可以帮助我!

亲切的问候,

AVR

回答

0

我想你想某事像这样:

SETLOCAL EnableDelayedExpansion 
set x=device 
FOR /f "delims=" %%a IN (Input_%date%.txt) DO (
    set b=%%a 
    echo !b:%x%=! 
) 

但是,一旦你安装SED(例如从unxutils),您可以用简单的一个衬垫做到这一点

type input_%date%.txt | sed "s/device//" 

我以为你可以转发输出到另一个r文件。

+0

谢谢你回答,你能解释一下更多关于代码的问题:线路是什么> echo!b:%x%=! 。为什么我们将%% a分配给b。以及分配给%% a的内容。你能否提供我可以阅读的链接?在此先感谢 –

+0

我有另一个问题:我执行该脚本,但没有任何更改,该文件是以前一样。我会阅读和尝试与“unxutils”,如果它的作品,我会回来。但我只想使用windows –

+1

@AVR [for /?](http://ss64.com/nt/for_cmd.html)和[set /?](http://ss64.com /nt/set.html)将回答你的大部分问题。这个答案只是把改变的内容写到屏幕上,你必须[重定向](http://ss64.com/nt/syntax-redirection.html)到一个新文件,然后[删除](http:// ss64.com/nt/del.html)将原始文件和[rename](http://ss64.com/nt/ren.html)新的名称改为原来的名称。 – Stephan

相关问题