You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows CMD如何提取.sql文件指定区间内容并写入新.sql文件?

Windows CMD 提取SQL文件指定区间内容的实现方案

原生CMD的type命令本身不支持内容区间筛选,可通过以下两种自带工具方案实现需求,无需额外安装软件:


方案1:CMD直接调用PowerShell单命令(推荐,最简单)

直接在CMD窗口执行以下命令即可,将命令中的表名、文件路径替换为你实际的参数即可:

powershell -Command "$content = Get-Content 'C:\Users\Documents\file.sql' -Raw; $content -match '(?s)-- Table structure for table `address`.*?UNLOCK TABLES;' | Out-Null; $matches[0] | Out-File 'C:\Users\Documents\new_file.sql' -Encoding UTF8"

参数说明:

  • 把命令里的address替换为你的目标表名
  • 若原文件编码不是UTF8,可将最后的UTF8改为Default适配系统默认编码
  • 文件路径包含空格的话,保持用单引号包裹即可正常识别

方案2:纯CMD批处理实现

如果需要完全用CMD原生语法实现,可以新建一个.bat后缀的批处理文件,写入以下内容后双击运行即可:

@echo off
setlocal enabledelayedexpansion

:: 配置区:按需修改以下三个参数即可
set "TARGET_TABLE=address"
set "SOURCE_FILE=C:\Users\Documents\file.sql"
set "OUTPUT_FILE=C:\Users\Documents\new_file.sql"

:: 固定起止标记,无需修改
set "START_FLAG=-- Table structure for table `%TARGET_TABLE%`"
set "END_FLAG=UNLOCK TABLES;"
set "WRITE_SWITCH=0"

:: 清空已有输出文件
del "%OUTPUT_FILE%" 2>nul

:: 逐行读取匹配写入,保留原文件空行
for /f "delims=" %%l in ('type "%SOURCE_FILE%" ^| findstr /n "^"') do (
    set "line=%%l"
    set "line=!line:*:=!"
    if "!line!"=="%START_FLAG%" set "WRITE_SWITCH=1"
    if !WRITE_SWITCH! equ 1 >>"%OUTPUT_FILE%" echo(!line!
    if "!line!"=="%END_FLAG%" set "WRITE_SWITCH=0"
)

endlocal
echo 提取完成,结果已写入%OUTPUT_FILE%

内容的提问来源于stack exchange,提问作者JasonX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:36:04