我想使用批处理文件替换文件中的字符串。
字符串是:
),(
我希望将其替换为:
),
(
我找到了几个帖子,比如这个帖子:"how-to-replace-substrings-in-windows-batch-file"但是这个例子使用的是一个没有特殊字符的虚拟字符串。
谢谢!
修改
上下文:我使用mysqldump
来提取数据库,我希望insert命令的每一行都在新行上以获得更多可见性。
我不想使用--extended-insert=false
,因为它会降低备份的重新插入速度。
EDIT2
示例:
INSERT INTO `dummytable` (`dummycolumn`) VALUES (1),(2),(3);
我希望它是:
INSERT INTO `dummytable` (`dummycolumn`) VALUES (1),
(2),
(3);
答案 0 :(得分:1)
call replacer.bat "e?C:\content.txt" "\u0022),(\u0022" "\u0022),\u000a(\u0022"
编辑,不带引号:
call replacer.bat "e?C:\content.txt" "),(" "),\u000a("
windows style
call replacer.bat "e?C:\content.txt" "),(" "),\u000D\u000a("
答案 1 :(得分:0)
这对我有用:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET textFile=test.txt
TYPE NUL>tempOut.txt
FOR /F %%l IN (%textFile%) DO (
SET line=%%l
SET line=!line:"),("="),\n("!
ECHO !line!>>tempOut.txt
)
MOVE /y tempOut.txt %textFile%
答案 2 :(得分:0)
如果模式始终相同,则批处理可以处理令牌和delim:
@echo off
(echo INSERT INTO `dummytable` (`dummycolumn`^) VALUES (1^),(2^),(3^);
)>%TEMP%\_file.tmp
(FOR /F "tokens=1,2,3* delims=," %%a IN (%TEMP%\_file.tmp) do (
echo %%a,
echo %%b,
echo %%c
))>_output.txt
exit /b 0
输出:
INSERT INTO `dummytable` (`dummycolumn`) VALUES (1),
(2),
(3);
修改强>
我在stackoverflow
@echo off
setlocal disableDelayedExpansion
REM Creating a Newline variable (the two blank lines are required!)
set NLM=^
set NL=^^^%NLM%%NLM%^%NLM%%NLM%
setlocal enableDelayedExpansion
for /f "delims=" %%a in (%TEMP%\_file.tmp) do (
set "line=%%a"
set line=!line:,(=,%NL%(!
echo !line!
)
endlocal
endlocal
exit /b 0