我不知道这是否可行,但我想制作一个批处理,用正斜杠替换所有包含在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。
答案 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
一起使用。
唯一的缺点是这将删除原始文件中的所有空行。我不知道这对你来说是否有问题。