如何使用 findstr 从引号内提取文本

how to extract text from inside quotes using findstr

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

我的测试

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"不需要的直接去掉就行了[= =18=]

如果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