windows - 在多个 zip 文件中搜索字符串

标签 windows batch-file cmd

这是我的;

在基于 Windows 的 Web 服务器上,大约有 1,000 个 zip 文件,每个文件中包含数十个日志文件。我已经有了一个脚本,它遍历每个存档并删除除一种特定文件类型之外的所有文件(试图节省磁盘空间并删除我不需要的东西)。然后,脚本将每个存档解压缩到它们自己的文件夹中。而且我知道如何编写相反的代码,以便在我完成后将它们压缩回去。

这是我需要弄清楚的;

一旦我运行了前面提到的脚本(我们称它为 garbageman,因为它清除了 zip 文件中的垃圾),我需要浏览每个新创建的解压缩文件夹中剩余的 5 或 6 个文件,并寻找一个每个文件中的特定字符串。如果找到该字符串,我会删除所有不是该字符串的内容,并将其保存到该文件夹​​中名为“export.txt”的文件中。然后,我转到下一个解压缩的文件,依此类推。完成后,我需要将所有内容重新压缩到他们自己的文件中

这是我到目前为止的代码。非常感谢任何帮助。

    cd "C:\Program Files\7-Zip"
FOR %%c in (C:\Users\xxxxxx\Desktop\LogQueue\*.*) DO 7z d %%c "-x!xstore*" -r


FOR /R "C:\Users\xxxxxx\Desktop\LogQueue" %%I in ("*.zip") do (
   "%ProgramFiles%\7-Zip\7z.exe" x -y -o"%%~dpnI" "%%~fI" 
 )

cd "C:\Users\xxxxxxx\Desktop\LogQueue"

FOR /R "C:\Users\xxxxxx\Desktop\LogQueue" %%I in ("*.*") do (
  findstr "xxxxxxxx_eReceipt" %%~fI > %%~dpnI\export.txt
  pause
 )

for /d %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a "%%X.zip" "%%X\" 

最佳答案

这是一个编辑:

这个脚本应该做你想做的事。

仅更改 sourcedirmystring 变量。

export.txt 将位于批处理根目录中名为 Storage 的文件中。

:ScriptA
@ECHO ON
MKDIR "%CD%\Storage"
MKDIR "%USERPROFILE%\Desktop\Outx"
GOTO :ScriptB

:ScriptB
::REM ONLY CHANGE
SET "sourcedir=%USERPROFILE%\Desktop\Test"
FOR /R "%sourcedir%\" %%a in (*.txt) do copy "%%a" "%CD%\Storage"
:ScriptC

:ScriptC
@ECHO OFF
SETLOCAL
SET "VARA=%CD%\Storage"
SET "VARB=%USERPROFILE%\Desktop\Out"
::REM ONLY CHANGE 
SET "mystring=PUT_STRING_HERE"
FOR %%a IN ("%VARA%\*.txt") DO FINDSTR "%mystring%" "%%a">nul&IF NOT ERRORLEVEL 1 FINDSTR "%mystring%" "%%a">"%VARB%\%%~nxa"
DEL /F "%CD%\Storage\*.txt"
GOTO :ScriptD

:ScriptD
@ECHO ON
COPY /B "%USERPROFILE%\Desktop\Outx\*.txt" "%CD%\Storage\export.txt"
RD /S /Q "%USERPROFILE%\Desktop\Outx"
goto :eof

关于windows - 在多个 zip 文件中搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38729638/

相关文章:

java - 只有在 mysql 运行后才在 windows 中启动时运行 java 程序?

windows - cmd 批量重命名子文件夹/文件

java - 在java中的cmd中打印一个表

ruby - 首次登录时在 heroku 中获取 "Authentication Failed"

c# - 计算在特定用户登录下运行的单个进程的所有实例的最佳方法是什么?

python - 如何在 python 中确定外部程序是否打开?

batch-file - .bat 停止 windows 更新

batch-file - makecab - 从文件夹中的所有文件创建 cab 文件

c++ - C/++ 中的简单模块化指南?

windows - 在配备 GeForce 960M 的笔记本电脑上初始化 D3D12 调试接口(interface)失败