我是批处理文件脚本的新手,需要开发一个脚本来使用批处理脚本替换文件中的字符。
我必须在名为 APP 的文件中将“servername/ActionService.asmx,1”替换为“servername/ActionService.asmx,0”。
请让我知道是否有任何仅使用命令的解决方案。
我是批处理文件脚本的新手,需要开发一个脚本来使用批处理脚本替换文件中的字符。
我必须在名为 APP 的文件中将“servername/ActionService.asmx,1”替换为“servername/ActionService.asmx,0”。
请让我知道是否有任何仅使用命令的解决方案。
您可以使用 GNUWin32 sed:
@ECHO OFF &SETLOCAL
set "string=servername/ActionService.asmx,1"
FOR /f %%a IN ('echo "%string%" ^| sed "s/[0-9]/0/"') DO set "newstring=%%~a"
ECHO %newstring%
如果您在这两种状态之间来回切换,创建两个具有不同名称的文件副本以及几个批处理文件(例如actionService1.bat
和actionService2.bat
)以在文件上复制适当的文件可能会更容易APP
。
否则,您可能会考虑获取 Windows 版本的 Unix 工具sed
和awk
,它们在这种类型的文件操作方面表现出色。
下面的批处理文件假定目标字符串恰好只有一行。这种方法比较快。
@echo off
for /F "delims=:" %%a in ('findstr /N "servername/ActionService.asmx,1" theFile.txt') do set lineNum=%%a
(for /F "tokens=1* delims=:" %%a in ('findstr /N "^" theFile.txt do (
set "line=%%b"
setlocal EnableDelayedExpansion
if %%a equ %lineNum% (
echo !line:1=0!
) else (
echo(!line!
)
endlocal
)) > theFile.new
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
:: Way the first - suppresses emptylines
FOR /f "delims=" %%i IN (app) DO SET line=%%i&set line=!line:servername/ActionService.asmx,1=servername/ActionService.asmx,0!&ECHO(!line!
ECHO ====================
:: Way the second
FOR /f "delims=" %%i IN ('type app^|findstr /n "$"') DO (
SET line=%%i
set line=!line:servername/ActionService.asmx,1=servername/ActionService.asmx,0!
SET line=!line:*:=!
ECHO(!line!
)
ECHO ====================
GOTO :EOF
Two ways here. You would need to redirect your choice to a new file as you cannot update in-place.
从这里使用一个名为 repl.bat 的辅助批处理文件:http: //www.dostips.com/forum/viewtopic.php? f=3&t=3855
type app |repl "servername\/ActionService.asmx,1" "servername/ActionService.asmx,0" >appnew.txt
做一个快速的谷歌搜索我发现了这个http://www.dostips.com/?t=Batch.FindAndReplace