2013-07-02 24 views
1

有沒有辦法在普通的.txt文件中傳輸字符。在文本文件中交換字符串的部分

我有很多在.txt文件的條目和它們都是以這種格式:

  • 1 =實施例,
  • 2 =例2,
  • 3 = ...示例3

我需要的是一個批處理文件傳輸「#=」字符串的右側。所以它看起來像這樣:

  • 示例= 1,
  • 例2 = 2 ...

是否有可能與.bat文件?

回答

3

這將處理超過一個字,你必須Example...

@echo off 
for /f "tokens=1,* delims== " %%a in (input.txt) do >>output.txt echo %%b = %%a 
+0

我試過了,但沒有改變任何東西。 – hobbilis

+0

我也嘗試在我製作的測試文件上使用它。裏面我已經把「1 = Example」並且在其上運行了批處理,沒有任何事情發生。 – hobbilis

+0

@ hobbilis現在就試試吧 - 它只能打印到屏幕上。現在它寫入output.txt文件。 – foxidrive

0

像這樣的東西應該工作:

@echo off 

pushd "C:\some\where" 
for /f "tokens=1,2 delims==" %%a in (input.txt) do echo %%b = %%a 
popd 

或者用它來擺脫空白:

@echo off 

setlocal EnableDelayedExpansion 

pushd "C:\some\where" 
for /f "tokens=1,2 delims==" %%a in (input.txt) do (
    set "key=%%a" 
    set "val=%%b" 
    echo !val: =! = !key: =! 
) 
popd 

將輸出保存到一個文件,請調用腳本是這樣的:

switch.cmd >output.txt 
+0

我都嘗試你的代碼,可惜沒有奏效。它通過我的.txt文件並沒有改變任何東西。 – hobbilis

+0

腳本只是將轉換後的行回顯到控制檯。如果你想在文件中輸出,重定向它(見更新的答案)。 –

+0

我已經修改了你的第一個代碼,所以它立即輸出。 '@迴響 SETLOCAL EnableDelayedExpansion PUSHD 「C:\用戶\ Hobbilis \桌面」 FOR/F 「令牌= 1,2 delims ==」 %%一箇中(input.txt中)做( 集「key = %% a」 set「val = %% b」 echo!val:=!=!key:=!>> output.txt ) popd' – hobbilis

2

如果你可以使用GNU sed

sed "s/\(\S\+\)\s=\s\(\S\+\)/\2 = \1/" file 
+0

謝謝,但我現在得到它的工作。感謝您的幫助! – hobbilis

相關問題