我遇到問題&替換已寫入的批處理腳本。我需要能夠打開一個文本文件,並從Windows命令行中更改它的一些值。我無法安裝sed.exe或FART或PowerShell,所以我需要這樣做。 它是如此容易得多,在linux做....查找並替換不符合空格的腳本/每行多個值
到目前爲止,我已經寫了這以下scrtipt如果我使用的只有每行一個字一個文件,它完美的作品,所以我可以很容易更改以下格式的文件
AAA
BBB
CCC
而這裏的批處理文件:
@echo off
setlocal enabledelayedexpansion
if not exist "%1" (echo this file does not exist...)&goto :eof
for /f "tokens=* delims=" %%a in (%1) do (
set write=%%a
if "%%a"=="%2" set write=%3
echo !write!
(echo !write!)>>%~n1.replaced%~x1
)
del %1
rename %~n1.replaced%~x1 %1
我的問題是我最需要改變的文件包含字符串和數字的多個值的行,像這樣:
AAA 1.5
BBB 25
CCC 0.1
誰能告訴我爲什麼我的腳本將不會改變BBB 25到BBB 45?這是否與分隔符是一個空間有關?我很確定它與數字無關,就好像我有一個由空格隔開的單詞文件,我的腳本也不會工作。
我一直在搜索論壇,並沒有發現這個問題,但我會繼續搜索。無論如何,您的幫助將不勝感激。
UPDATE
問題解決了!我在DosTips.com上發現了BatchSubstitute.bat的this revision,只是在臨時文件中添加額外的迴應已解決了我的問題。我仍然不確定爲什麼我發佈的代碼不起作用,因此如果有人能夠解釋它會很好。所有這些我都很新!
更新2
這裏有我需要從改變一個典型的輸入文件:
K1 1E3
K2 2E5
ñ1.5
×10
並經過我運行腳本(replace.bat prefs.txt「k1 1e3」「k1 5e4」)應該是:
K1 5E4
K2 2E5
N1。5
×10
它應該能夠改變任何行的文件中。在上次更新的論壇版本似乎能夠工作,我只是不知道爲什麼我發佈的第一個版本不起作用。
+1陳述良好的問題和「它是如此容易...」。祝你好運。 – shellter 2012-07-06 14:37:08
哈哈,謝謝。我其實剛剛嘗試了[另一篇文章]中提到的dostips.com中的BatchSubstitute.bat(http://stackoverflow.com/questions/60034/how-can-you-find-and-replace-text-in-一個文件 - 使用 - 的 - 窗口的命令行-ENVIR)。在我的Windows 7機器上,它會顯示替換的文本,但不覆蓋文件,但在XP機器上,我需要這個工作,它根本不工作。需要以某種方式將兩個文件拼接在一起。 – jpmorr 2012-07-06 15:01:26
你可以編輯你的文章,包括顯示輸入和輸出的示例運行?或者你只需要'...設置寫入「%3」'(注意dbl-quotes)。祝你好運。 – shellter 2012-07-06 15:52:34