bat命令学习

@echo off
::把需要搜索的路径赋值给变量sp,这里举例是c:/tmp
set sp=c:/tmp
::把需要查找的文件名赋值给变量cf,这里举例是root.txt
set cf=root.txt
::把将被替换的字符串赋值给st,这里举例是apple
set st=apple
::把替换字符串赋值给dt,这里举例是lemon
set dt=lemon

::以上的这些赋值执行后,将会把C盘tmp文件夹下面包括子文件夹里的root.txt中的apple全部替换成lemon

::下面的代码将完成替换工作

for /r %sp% %%a in (%cf%) do (call :doit “%%~dpa”)
goto end

:doit
setlocal enabledelayedexpansion
pushd %1
for /f “tokens=1,2* delims=:” %%i in (‘findstr /n “.*” %cf%’) do (
set txt=%%j
if “!txt!” == “” (
echo.>>%1root.tmp
) else (
echo !txt:%st%=%dt%!>>%1root.tmp
)
)
move /y root.tmp root.txt

:end

 

《bat命令学习》有1个想法

  1. subst t: /d
    subst t: %cd%
    for %%a in (t) do (
    for /f “delims=” %%b in (‘dir/a-d/s/b %%a:\version.txt*’) do (
    del %%b
    )
    )
    setlocal enabledelayedexpansion
    for %%c in (t) do (
    for /f “delims=” %%d in (‘dir/a-d/s/b %%c:\*HEAD’) do (
    set /p e=root.ini
    echo %%d |findstr /c “git\HEAD”>nul 2>nul && move /y root.ini %%~dpd..\version.txt)

    )
    for %%f in (t) do (
    for /f “delims=” %%g in (‘dir/a-d/s/b %%f:\Makefile*’) do (
    if exist %%~dpg..\..\version.txt (copy %%~dpg..\..\version.txt %%~dpgversion.txt)
    if exist %%~dpg..\version.txt (copy %%~dpg..\version.txt %%~dpgversion.txt)
    )
    )
    pause

    subst t: /d

发表评论

邮箱地址不会被公开。 必填项已用*标注