使用批处理将文本文件中的变量替换为固定值

时间:2015-06-11 14:12:12

标签: windows batch-file cmd batch-processing

我想使用批处理文件将OLD替换为%NEW%中的test.txt

@echo off 
set /p NEW=""
set InputFile=test.txt
find OLD
replace %NEW%

我的test.txt包含各种字符,例如~ : ; _ .,我将其归结为各种解决方案。

我尝试使用BatchSubstitude.bat来实现此功能,但它不会“找到”OLD并且不会替换任何文本。

我还尝试使用fart.exe,但在尝试执行此操作时收到错误:

find_string="OLD"
replace_string="test"
actual find_length=3
actual replace_length=4
processing \filepath\,test.txt
skipping binary file: \filepath\test.txt

这方面的文档很少,没有什么我可以疯狂地google提供解决方案。

我暂时使用批处理的原因是我执行各种Windows CE操作,例如cecopy,pdel和rapistart for windows CE部署而不是activesync和批处理似乎是最简单的方法来获得我想要的结果 - 我是批量的总菜鸟。

是否有人知道如何通过批处理实现这一目标,并解释各种功能如何实现这一目标?

干杯!

2 个答案:

答案 0 :(得分:0)

请勿从sourceforge下载任何内容,以便更好地跳过放屁。 当使用特殊字符(&<>|^)时,dostips中的方法不那么健壮,因为它指向那里。这是一个简单的批处理/ jscript,它将替换文件中的内容(您可以更改硬编码像文件位置这样的东西):

0</* :
@echo off

set "file=c:\test.txt"
set "find=OLD"
set /p "replace=NEW: "
cscript /nologo /E:jscript "%~f0" %file% %find% %replace%

echo ==replaced==


exit /b */0;

var FSOObj = new ActiveXObject("Scripting.FileSystemObject");
var ARGS = WScript.Arguments;
if (ARGS.Length < 3 ) {
 WScript.Echo("Wrong arguments");
 WScript.Quit(1);
}
var filename=ARGS.Item(0);
var find=ARGS.Item(1);
var replace=ARGS.Item(2);

var readStream=FSOObj.OpenTextFile(filename, 1);

var content=readStream.ReadAll();
readStream.Close();

function replaceAll(find, replace, str) {
  return str.replace(new RegExp(find, 'g'), replace);
}

var newConten=replaceAll(find,replace,content);

var writeStream=FSOObj.OpenTextFile(filename, 2);
writeStream.WriteLine(newConten);
writeStream.Close();

同时检查这些更高级的工具

FindRepl

JRepl

答案 1 :(得分:0)

试试这个:

>> plot(0.99811506 * sin(-1.00102866 * x + 3.14393633))