2011-08-19 73 views
0

我不知道這是否可能,但我想用正斜槓來批量替換所有包含在txt文件(C:\ locations)中的反斜槓。使用批量替換TXT文件中的字符?

THX ..

編輯:

我試着去循環:

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

我至今是:

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

與共同努力

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

你在窗戶上,對不對? –

+0

你有什麼樣的工具可用?這聽起來像是sed的工作。 – 2011-08-19 08:15:31

回答

1

Windows的PowerSheel太有限了。我建議你使用像Perl這樣的腳本語言。下面是一個簡單腳本,它是:

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

可以啓動它像

perl foo.pl <example.txt> result.txt 

使用的sed通過Tichodroma的建議是另一種非常好的選擇。

+0

查看我的編輯詳情 – milly

+0

我不明白... – m0skit0

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-line工作。

唯一的缺點是,這將刪除原始文件中的所有空行。我不知道這對你是否有問題。

相關問題