reading a TEXT file and i need to bring a structure into it

Discussion forum for all Windows batch related topics.

Moderator: DosItHelp

Post Reply
Message
Author
nnnmmm
Posts: 141
Joined: 26 Aug 2017 06:11

reading a TEXT file and i need to bring a structure into it

#1 Post by nnnmmm » 26 Dec 2021 09:19

WEB.BAT has

Code: Select all

@ECHO OFF
SET K1=M:\WEB.TXT

SET DS1=7
SET DS2=75
SetLocal EnableExtensions EnableDelayedExpansion

SET CC=0
FOR /F "DELIMS=" %%V IN ('TYPE "%K1%"') DO (
   SET /A CC=!CC!+1

   IF !CC! GEQ 1 IF !CC! LEQ 9 SET DD= !CC!
   IF !CC! GTR 9 SET DD=!CC!

   SET "VV=%%V"
REM   SET "VV=!VV:&=^&!"
   ECHO !DD! !VV:~%DS1%,%DS2%!

   IF !CC! EQU 35 GOTO SCREEN_FULL
)
:SCREEN_FULL
PAUSE
WEB.TXT has
http://www.zt!w3.com/forum/forum.php
http://truebasic.com/forum
http://www.google.com/advanced_search?n ... =&ie=UTF-8
https://www.dict.cc/?s=Matrose!
http://www.ho!!!!!!!!!!!!!!!t-keyboard.com/
http://www.mscd.edu/~mdl/gerresources/A.htm

web.bat displays & but not "!"
how can i make it display "!"?
putting this &=^& corrupts website with ^&
can this be done internally?

aGerman
Expert
Posts: 4678
Joined: 22 Jan 2010 18:01
Location: Germany

Re: reading a TEXT file and i need to bring a structure into it

#2 Post by aGerman » 27 Dec 2021 07:04

First, it seems that you want to cut off the protocol specifier. HTTP and HTTPS have different lengths. So, your DS1 of 7 doesn't make sense. Taking a backslash as delimiter is more suitable.
As to your problem: You define variable VV with delayed expansion enabled. That won't work.

Code: Select all

@echo off &setlocal EnableExtensions DisableDelayedExpansion

for /f "tokens=1,2* delims=:/" %%i in ('type "web.txt"^|findstr /n "^"') do (
  set "line= %%i"
  set "address=%%k"

  setlocal EnableDelayedExpansion
  echo !line:~-2! !address!
  endlocal

  if %%i equ 35 goto SCREEN_FULL
)

:SCREEN_FULL
pause
Steffen

nnnmmm
Posts: 141
Joined: 26 Aug 2017 06:11

Re: reading a TEXT file and i need to bring a structure into it

#3 Post by nnnmmm » 28 Dec 2021 04:46

i couldnt bring a structure in your code for me to use it or upgrade it further

Code: Select all

@ECHO OFF
setlocal EnableExtensions DisableDelayedExpansion
SET K1=M:\WEB.TXT
SET DS1=0
SET DS2=35

SET CC=0
FOR /F "tokens=*" %%V in ('TYPE "%K1%"') DO (

  setlocal DisableDelayedExpansion
  set "VV=%%V"
  setlocal EnableDelayedExpansion

   SET /A CC=!CC!+1
   IF !CC! GEQ 1 IF !CC! LEQ 9 SET DD=0!CC!
   IF !CC! GTR 9 SET DD=!CC!

   IF !CC!==3 (ECHO !DD!              pass
   ) ELSE (

     SetLocal EnableDelayedExpansion
        ECHO !DD!   !VV:~%DS1%,%DS2%!
     EndLocal
   )
  
   IF !CC! EQU 35 GOTO :SCREEN_FULL
)
:SCREEN_FULL
ECHO.
PAUSE
if WEB.TXT has more than 15 items in the list, it fails and says maximum setlocal RECURSION level reached,
windows batch commands have many unfathomable operators but they have no structures whatsoever, even for a code as simple as the above, i will try using CALL from an external file. i did this way once and kind of worked (at least 1st test drive). you may be right "cant be done" internally. i'd like to ask again when my external batch is ready, thanks for the help

aGerman
Expert
Posts: 4678
Joined: 22 Jan 2010 18:01
Location: Germany

Re: reading a TEXT file and i need to bring a structure into it

#4 Post by aGerman » 28 Dec 2021 05:34

Think about the following:
- delayed expansion is disabled at the beginning, thus it is disabled at the beginning of your loop already
- incrementing the number works always using SET /A "CC+=1" and doesn't need delayed expansion enabled
- only outputting or working with updated values needs enabled delayed expansion
- every SETLOCAL without ENDLOCAL in the body of your loop will lead to the maximum recursion error earlier or later.
- once you leave a subenvironment using ENDLOCAL, the previous expansion state is restored

Steffen

Aacini
Expert
Posts: 1914
Joined: 06 Dec 2011 22:15
Location: México City, México
Contact:

Re: reading a TEXT file and i need to bring a structure into it

#5 Post by Aacini » 28 Dec 2021 11:16

Excuse me, but I don't understand what "bring a structure into a text file" means. Is this your input data file?

Code: Select all

http://www.zt!w3.com/forum/forum.php
http://truebasic.com/forum
http://www.google.com/advanced_search?n ... =&ie=UTF-8
https://www.dict.cc/?s=Matrose!
http://www.ho!!!!!!!!!!!!!!!t-keyboard.com/
http://www.mscd.edu/~mdl/gerresources/A.htm
If so, why don't you post what is the desired output given such an input? In this way, we could help you to get such result. By the way, this is the standard method to request help...

Antonio

Squashman
Expert
Posts: 4486
Joined: 23 Dec 2011 13:59

Re: reading a TEXT file and i need to bring a structure into it

#6 Post by Squashman » 28 Dec 2021 13:17

The code given to you by aGerman certainly looks like it solves your problem. I am not sure why you have not attempted to use his code. All you did was update your code with what you thought might be a new solution.

nnnmmm
Posts: 141
Joined: 26 Aug 2017 06:11

Re: reading a TEXT file and i need to bring a structure into it

#7 Post by nnnmmm » 06 Jan 2022 11:25

>> SET /A "CC+=1"
i will try this way now. i dont know C compiler, i know fortran and true basic, and some pascal (but much was forgotten)
i have limited knowledge of DOS commands, especailly DOS operators.

>> bring a structure into it
i meant this way by being able to put IF statement inside so that i could handle and filter things.

i need to feed unimaginably long registries, i dont need to see all string lengths, but if i can chop and view overall somewhere maybe like [20:100] or [40: 120] string regions to identify some key words inside, then i can link that registry to nircmdc.exe to find it. such is also the case with long website addresses. i will link this kind of batches with ztree file manager.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
HKEY_USERS\S-1-5-21-790525478-796845957-725345543-1003\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\Favorites\
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace

i will get back to you hopefully in few days, thanks for the help

Post Reply