windows - 如何使用 findstr 从内部引号中提取文本

标签 windows batch-file findstr

我有一个充满文件的目录,我正在尝试查找str并提取引号内的内容

我的测试

G:\Games\Steam\steamapps\common\XXXXXXXXX\addons>findstr addontitle workshop\*.vpk
workshop\XXXXXXXXX.vpk:        addontitle "Addon 1"
workshop\XXXXXXXX.vpk:        addontitle                      "Addon 2"
-cont-

我只想有标题

for /f tokens^=1-3delims^=:^" %%i in ('findstr /RC:"addontitle *\".*\"" "workshop\*.vpk"') do (
    echo "FOUND: %%~ni.vpk TITLE: %%k"
    mkdir "custom\%%~ni">nul 2>&1
    mklink ".\custom\%%~ni\pak01_dir.vpk" "..\..\workshop\%%~ni.vpk">nul 2>&1
    echo            Game                "left4dead2\addons\custom\%%~ni"        // %%k>> %GAMEINFO%
)

for /f tokens^=1-3delims^=:^" %%i in ('findstr /VRC:"addontitle *\".*\"" "workshop\*.vpk"') do (
    echo "FOUND: %%~ni.vpk"
    mkdir "custom\%%~ni">nul 2>&1
    mklink ".\custom\%%~ni\pak01_dir.vpk" "..\..\workshop\%%~ni.vpk">nul 2>&1
    echo            Game                "left4dead2\addons\custom\%%~ni"        // ADDON INFO MISSING>> output.txt
)

最佳答案

这个怎么样?

@echo off
for /f tokens^=1-3delims^=:^" %%i in ('findstr /RC:"addontitle *\".*\"" "workshop\*.vpk"') do (
    mkdir "custom\%%~ni">nul 2>&1
    mklink ".\custom\%%~ni\pak01_dir.vpk" "..\..\workshop\%%~ni.vpk">nul 2>&1
    echo          Game                "XXXXXXXX\addons\custom\%%~ni"        // %%k
)>> output.txt

findstr 在文件列表上使用时无论如何都会获取文件名,因此只需使用它即可。

注意我擅自在字符串 echoed "XXXXXXXX\addons\custom\%%~ni" 中添加了双引号如果您不需要它,只需将其删除即可。

如果 addontitle 可能是任何情况,请将 /I 添加到 findstr 命令中。

@echo off
for /f tokens^=1-3delims^=:^" %%i in ('findstr /IRC:"addontitle *\".*\"" "workshop\*.vpk"') do (
    mkdir "custom\%%~ni">nul 2>&1
    mklink ".\custom\%%~ni\pak01_dir.vpk" "..\..\workshop\%%~ni.vpk">nul 2>&1
    echo          Game                "XXXXXXXX\addons\custom\%%~ni"        // %%k
)>> output.txt

关于windows - 如何使用 findstr 从内部引号中提取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62845352/

相关文章:

string - Powershell在找到另一个字符串后提取字符串

windows - 如何强制 `findstr`忽略 `Cannot open`返回

python - 尝试导入 P4 时没有名为 P4API 的模块

android - 如何使用android-ndk-r10d在windows上编译ffmpeg-2.5.3

windows - 使用bat文件获取和删除redis数据

windows - 从具有管理员权限的 webapp 启动服务并通过批处理文件传递

windows - 需要从 32 位和 64 位机器 Windows 机器读取注册表值

windows - 删除文本文件的第一行

linux - 如何将cygdrive更改为windows目录结构

windows - 如何运行组合 findstr 脚本