要搜索的批处理文件?并将其替换为txt文件中的%

时间:2014-08-31 21:12:27

标签: batch-file vbscript

我想要批量文件搜索?符号并将其替换为txt文件中的%符号

我看到许多搜索和替换代码并且它不会替换?与%

如果任何人有代码并且它适用于vbs发布

例如:

 @echo off     
 setlocal
 set "search=?"                              
 set "replace=%"                              
 set "textfile=test.txt"
 set "newfile=newtest.txt"

 (for /f "delims=" %%i in ('findstr /n "^" "%textfile%"') do (
 set "line=%%i"
 setlocal enabledelayedexpansion
 set "line=!line:%search%=%replace%!"
 echo(!line!
 endlocal
 ))>"%newfile%"
 type "%newfile%" > nul

2 个答案:

答案 0 :(得分:1)

此批处理解决方案优于相关批处理脚本,因为它不会将行号添加到新文件中。

@echo off
setlocal EnableDelayedExpansion
set "search=?"
set "replace=%%"
set "textfile=test.txt"
set "newfile=newtest.txt"
if exist "%newfile%" del "%newfile%"
for /F "usebackq delims=" %%L in ("%textfile%") do (
   set "Line=%%L"
   set "Line=!Line:%search%=%replace%!"
   if not "!Line: =!"=="" echo !Line!>>"%newfile%"
)
endlocal

<强>注意!

test.txt将空行和newtest.txt中只有空格的行复制到?%替换为echo。只有水平制表符的行会导致将{{1}}的状态写入新文件。所以我建议用文本编辑器而不是批处理文件进行替换,尽管我认为可以改进代码以便将空白行和空行也复制到新文件中。

答案 1 :(得分:0)

这可以通过PowerShell帮助轻松实现,使用单行命令,直接从命令控制台。请参阅下面的示例。如果您计划在批处理文件中使用它,请将%替换为%%。

C:\Scripts>type input.txt
Sometext ? here
here is another ? text
?? test file..
sample??

C:\Scripts>powershell -command (get-content input.txt ^| %{ $_ -replace \"\?\",\"%\"})
Sometext % here
here is another % text
%% test file..
sample%%

干杯,G