我的文件有一些行......例如
NSDirectoryEnumerator *directoryEnumerator = [[NSFileManager defaultManager] enumeratorAtPath:directory];
for (NSString *file in directoryEnumerator) {
NSString *filename;
filename=file;
filename= [directory stringByAppendingPathComponent:file];
processFile(filename);
}
我设置了一个变量" replace = test_15_5" ..和" Search = config.vm.box"
我需要一个批量代码来搜索" config.vm.box"在文件中并替换下一个字符串" test_15_4"使用%替换%..代码应替换文件中的每个匹配项。
我写过小代码但没有成功:
line no 20 # Every Vagrant virtual environment requires a box to build off
line no 21 config.vm.box = "test_15_4"
line no 22 # The URL from where the 'config.vm.box' box will be fetched if it
line no 23 config.vm.box_url = "file:\\d:\\images\\test.box"
答案 0 :(得分:1)
用于替换批处理文件的syntax:View padding = new View(this);
padding.setHeight(100);
listView.addHeaderView(padding);
你的问题有点复杂,因为你需要双重扩展。您可以使用delayed expansion来实现它。
在for
命令中使用%variable:StrToFind=NewStr%
而非tokens=*
,因为您不需要对该行进行标记。
不需要delims=
:如果找到了搜索,则会被替换,否则会保留原始文本。
if
<强>更新强>
我试着用搜索文本重新创建这条线。
setlocal EnableDelayedExpansion
rem set variables here: INPUT, OUTPUT, SEARCH, REPLACE
del %OUTPUT%
for /f "tokens=*" %%T in (%INPUT%) do (
set PROCESSEDLINE=%%T
>> %OUTPUT% echo !PROCESSEDLINE:%SEARCH%=%REPLACE%!
)
但是,批处理文件解释器中的简单替换机制将与包含空格或for /f "tokens=*" %%T in (%INPUT%) do (
set PROCESSEDLINE=%%T
if !PROCESSEDLINE!==!PROCESSEDLINE:%SEARCH%=! (
rem not found
>> %OUTPUT% echo !PROCESSEDLINE!
) else (
rem found
>> %OUTPUT% echo %SEARCH% %REPLACE%
)
)
等特殊字符的搜索字符串完全混淆。在这种情况下,我更喜欢使用更复杂的工具来搜索和替换字符串:sed。它作为UnxUtils的一部分移植到独立的Windows应用程序。
使用=
,替换命令为:
sed
它需要单独的输入和输出文件,就像我上面的脚本一样。