2016-08-04 85 views
2

我已经完成了一些搜索,找不到任何需要的东西,而且我的代码由于某种原因而不工作。批处理脚本在目录中搜索字符串并将结果保存到文件中

我有一个文件夹包含多个子目录与日志文件,有点像这样;

  1. 天1日志
    • 登录机器1
    • 登录机器2
    • 登录机3
  2. 第2天记录
    • 登录机器1
    • 登录苹果电脑海因2
    • 登录机3

等等...

我写信是应该进入每个子目录下的脚本,搜索字符串中每个文件目录,并输出出现的次数到文件该目录中

预期结果:

  1. 个第1天日志
    • 登录机器1
    • 登录机器2
    • 登录机3
    • 成绩
  2. 第2天记录
    • 登录机器1
    • 登录机2
    • 登录机3个
    • 结果

然后,我有一个脚本,通过去和它自己的zip文件,用于归档目的拉链了每个文件夹。

这里是我的代码:

ECHO /// UNZIPPING ALL FOLDERS AND DELETING ORIGINAL ZIPS /// 
FOR /R "C:\Users\xxx\Desktop\LogQueue" %%I in ("*.zip") do (
    "%ProgramFiles%\7-Zip\7z.exe" x -y -o"%%~dpnI" "%%~fI" 
) 
del /s /q /f C:\Users\pat\Desktop\LogQueue\*.zip 

ECHO /// SEARCHING FOR STRING AND SAVING TO EXPORT FILE /// 
cd "C:\Users\pat\Desktop\LogQueue"  
for %%f in (*.log) do findstr /i /m /p /c:"error" "%%f" >> results.txt 


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

任何帮助表示赞赏。无论出于何种原因,搜索功能都没有任何作用。解压缩和重新压缩过程正常工作。

+0

一个精心制作的问题的例子,易于阅读和理解。 – sambul35

回答

3

将此脚本保存为analyze.bat,从Cmd提示符运行,尝试调试任何错误。让我知道,如果需要帮助:

@echo off 
set dir=%USERPROFILE%\Desktop\LogQueue 
echo /// UNZIPPING ALL FOLDERS AND DELETING ORIGINAL ZIPS /// 
for /R "%dir%" %%I in ("*.zip") do (
    "%ProgramFiles%\7-Zip\7z.exe" x -y -o"%%~dpnI" "%%~fI" 
    del /s /q /f %%I) 
echo /// SEARCHING FOR STRING AND SAVING TO EXPORT FILE /// 
for /R "%dir%" %%G in (.) do (
    pushd "%%G" 
    for %%H in (*.log) do find /i "error" "%%H" >> results.txt 
    echo /// ZIPPING %%G folder /// 
    for %%X in (*.*) do "c:\Program Files\7-Zip\7z.exe" a "%%X_new.zip" "%%G\" 
    popd) 
echo/& echo Completed 
timeout 5 
exit /b 
+2

也许使用包含用户名的变量会更好。 'set“dir = C:\ Users \%USERNAME%\ Desktop \ LogQueue”'。更好的可能是'设置'dir =%USERPROFILE%\ Desktop \ LogQueue“'。 – lit

+2

现在进行测试,但看起来它完美无缺!非常感谢!我真的为争取陈述而苦苦挣扎。只是无法设法将搜索和zip函数嵌套到同一个语句中。 – Patrick

+1

@Liturgist同意,如果他正在访问自己的个人资料。 :) – sambul35

相关问题