我想要批量文件搜索?符号并将其替换为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
答案 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