使用批处理替换TXT文件中的字符?

时间:2011-08-19 08:14:01

标签: batch-file replace character text-files

我不知道这是否可行,但我想制作一个批处理,用正斜杠替换所有包含在txt文件(C:\ locations)中的反斜杠。

THX ..

编辑:

我试图循环:

set str1=!Var1!
echo.%str1%
set str1=%str1:\=/%

与:

一起工作
set file=C:\text1.txt
FOR /F %%i IN (%file%) DO (
set username=%%i
echo (load "%%i") >> C:\text.txt
)

到目前为止我所拥有的是:

ECHO Retreving list of files...
dir /s /b c:\ICT\AUTOCAD_2010\*.LSP > C:\BART1.txt

Echo Looping variables...
set file=C:\text1.txt
FOR /F %%1 IN (%file%) DO (
set fred=%%1
echo %%1 > C:\tempme.txt
)
set fred=C:\tempme.txt
set fred=%fred:\=/%
echo (load "%fred%") >> C:\text2.txt

however this returns:

(load "C:/tempme.txt")

是incorect。

2 个答案:

答案 0 :(得分:1)

Windows的PowerSheel太有限了。我建议你使用像Perl这样的脚本语言。这是一个快速的脚本:

my @file = <STDIN>;
my $text = join('', @file);
$text =~ s/\\/\//g;
print($text);

您可以像

一样启动它
perl foo.pl < example.txt > result.txt

使用Tichodroma建议的 sed 是另一个非常好的选择。

答案 1 :(得分:1)

我对你真正想要的东西感到有点困惑。您的示例代码的FOR ... IN只有IN ()中的一个文件,即%fred%的内容。然后将该文件名写入临时文件。之后,您使用SET替换反斜杠,并在临时文件的名称中使用正斜杠。但这绝不会触及任何档案。

但是,在您的开始段中,您希望用文件中的正斜杠替换反斜杠。所以我专注于那一部分。这将以这种方式完成:

@ECHO OFF

SETLOCAL EnableDelayedExpansion

REM Here's a backslash: \

FOR /F "delims=" %%a IN ('TYPE %0') DO (
    SET line=%%a
    ECHO !line:\=/!
)

请注意,为简单起见,这个小批处理文件会自行解析(%0),因此只会替换掉一个反斜杠。但是,您可以随意放置TYPE旁边的文件。

EnableDelayedExpansion生成!的语法(有关延迟扩展的详细信息,请参阅SET /?)。 TYPE显然会将文件写入控制台。 FOR /F "delims="现在每行抓取该行的输出(因为delims=没有定义FOR的标记化器的分隔符。 line - 变量是必要的,因为我认为没有一种正确的方法可以使ECHO - 行与%%a一起使用。

唯一的缺点是这将删除原始文件中的所有空行。我不知道这对你来说是否有问题。