Welcome guest. Before posting on our computer help forum, you must register. Click here it's easy and free.

Author Topic: What worning with my BAT script  (Read 2262 times)

0 Members and 1 Guest are viewing this topic.

tonlo

    Topic Starter


    Rookie

    What worning with my BAT script
    « on: May 03, 2009, 01:25:08 PM »
    i have 2 text file name: doc.txt and string.txt

    Doc.txt
    Code: [Select]
    hahah1
    kikikik2
    fefefefe3
    anh3
    gugugugu4

    String.txt
    Code: [Select]
    anh1
    anh2
    anh3

    It was OK when i split my script to two part.

    Code: [Select]
    findstr /xnc:%~1 doc.txt
    echo %errorlevel%

    and

    Code: [Select]
    for /f %%i in (string.txt) do echo %%i
    But when join 2 of them, i met the problem with %errorlevel%. Anybody can explain for me whats wrong in this case? :'(

    Code: [Select]
    @echo off
    for /f %%i in (string.txt) do (
    findstr /xnc:"%%i" doc.txt
    if %errorlevel%==0 echo do nothing
    if %errorlevel%==1 echo do something
    )

    Here is the picture

    Dias de verano

    • Guest
    Re: What worning with my BAT script
    « Reply #1 on: May 03, 2009, 05:08:48 PM »
    1. Using Google, study why we use "delayed expansion" in loops

    2. Try this

    @echo off
    setlocal enabledelayedexpansion
    for /f %%i in (string.txt) do (
       findstr /xnc:"%%i" doc.txt
       if !errorlevel!==0 echo do nothing
       if !errorlevel!==1 echo do something
    )

    tonlo

      Topic Starter


      Rookie

      Re: What worning with my BAT script
      « Reply #2 on: May 04, 2009, 05:40:02 AM »
      Thanks, Dias.

      More question.
      How can i insert a string in the end of a file without entering a new line.

      needaddcata.txt
      Code: [Select]
      41006200730065006E0063006500
      43007500730074006F006D0065007200
      4D00610069006E00740065006E0061006E0063006500
      4F007400680065007200
      520026004400
      54007200610069006E0069006E006700

      My code:

      Code: [Select]
      @echo off
      setlocal enabledelayedexpansion

      for /f "tokens=3 delims= " %%i in ('reg query hkcu\software\microsoft\office\11.0\outlook\categories') do @echo %%i > temp.txt
      for /f %%i in (needaddcata.txt) do (
         findstr /c:"%%i" temp.txt > nul
         if !errorlevel!==1 echo %%i >> temp.txt
      )

      After my code run, the output file content:

      temp.txt
      730074006F006D00650072003B004D006100690 06E00740065006E0061006E00630065003B004D 0069007300630065006C006C0061006E0065006 F00750073003B004F0074006800650072003B00 50006500720073006F006E0061006C003B00500 068006F006E0065002000430061006C006C0073 003B005200260044003B0053007400610074007 50073003B005300740072006100740065006700 6900650073003B0053007500700070006C00690 06500720073003B00540069006D006500200026 00200045007800700065006E007300650073003 B0054007200610069006E0069006E0067003B00 5600490050003B00570061006900740069006E0 067003B000000
      41006200730065006E0063006500
      43007500730074006F006D0065007200

      And if the output file was OK, how do i add that content in registry? because its require a hex.
      reg add hkcu\software\microsoft\office\11.0\outlook\categories /v MasterList /t REG_BINARY /d " ??? "


      My script try to add some categories into MS Outlook "master category list". it just only add the missing category
      Make sure you backup for registry before doing anything.
      « Last Edit: May 04, 2009, 10:14:58 PM by tonlo »

      tonlo

        Topic Starter


        Rookie

        Re: What worning with my BAT script
        « Reply #3 on: May 04, 2009, 10:32:02 PM »
        everyone pleaseeeee.... :'(