Page 1 of 1
IPO - batch
Posted: 25 Jan 2017 18:26
by xThule
Hi guys,
i've got a little problem and i dont know where i failed cuz every tutorial i read didnt answer my specific question
everything works alone but together only the first part works
the plan:
take file 1 (file.txt)
read the lines
cut them
write them in file 2 (file_2.txt)line syntax 123456789012
testxxtest123456789012
i only want the "testxxtest" part
i got large files with up to 10000 lines with syntaxes look like the above
numbers in the front numbers in the back and a alphanumerical code in the middle
for the following steps i only need the code in the middle
re writing the existing output from the db is not possible
so i have to take the db output, manually change the whole txt (delete the unnecessary characters)
and then upload it again for further useif necessary re write my batch code completely but please comment it =)
Code: Select all
@echo off
title EVA
FOR /F %%i in (file.txt) do (
set str=%%i
set str=%str:~11,-12%
echo.%str%>>"file_2.txt"
)
echo EVA has done her work
pause
Re: IPO - batch
Posted: 25 Jan 2017 20:25
by Squashman
You said the code you need to keep is alphanumeric meaning it contains numbers and letters. How are we supposed to know where to start and stop?
Regardless you are inside a code block so you need to use delayed expansion.
Re: IPO - batch
Posted: 25 Jan 2017 23:47
by Aacini
You have not explained what is your problem, nor what is the format of the input file (an
example is certainly not a
description), and this phrase:
"everything works alone but together only the first part works" is not clear at all!
However, if you want to
eliminate the first 12 and last 12 characters from each line, then your code is close:
Code: Select all
@echo off
rem Next line enable Delayed Expansion, that is needed to get the value of a variable
rem that was modified inside a FOR loop (using exclamation-marks instead of percent-signs)
setlocal EnableDelayedExpansion
title EVA
(FOR /F %%i in (file.txt) do (
set str=%%i
echo !str:~11,-12!
)) >"file_2.txt"
rem It is much faster to execute just one redirection for the whole file,
rem than execute one redirection *for each line*
echo EVA has done her work
pause
If this is not what you want, then you have to explain your problem more clearly...
Antonio
Re: IPO - batch
Posted: 26 Jan 2017 04:40
by xThule
Squashman wrote:You said the code you need to keep is alphanumeric meaning it contains numbers and letters. How are we supposed to know where to start and stop?
Regardless you are inside a code block so you need to use delayed expansion.
ok maybe it wasnt clear enough the syntax is everytime the same 12 numbers then the code and then again 12 numbers
Aacini wrote:You have not explained what is your problem, nor what is the format of the input file (an example is certainly not a description), and this phrase: "everything works alone but together only the first part works" is not clear at all!
However, if you want to eliminate the first 12 and last 12 characters from each line, then your code is close:
ok sorry my problem is that it doesnt cut the lines and only writes echo is off in the files
the file i work with is a simple txt that i got from the db with lines explained above and i have to reupload a simple txt
the program in the background does the rest but i cant change the db output atm so i needed this workaround
but your code solved my problem
last question it doesnt matter how long the file is ? (line count)
thx for the fast response
thx for the help
and sorry for that it wasnt clear enough explained
Re: IPO - batch
Posted: 26 Jan 2017 17:26
by rodrigolima
Hello xThule
try this:
Code: Select all
@echo off
cls
:: Delete Files before start process
if exist "%~dp0output.txt" del "%~dp0output.txt"
if exist "%~dp0pipeline.txt" del "%~dp0pipeline.txt"
SetLocal EnableDelayedExpansion
::generate text file to get file names
dir /b text*.txt>pipeline.txt
:: Loop through Files
for /f %%a in (pipeline.txt) do (
echo Current File: %~dp0%%a
::Get File Content(Just 1 Line)
set /p str=<%~dp0%%a
:: Replace [0-9] to Empty
set str=!str:0=!
set str=!str:1=!
set str=!str:2=!
set str=!str:3=!
set str=!str:4=!
set str=!str:5=!
set str=!str:6=!
set str=!str:7=!
set str=!str:8=!
set str=!str:9=!
:: Get Current File Original Texto NumbersTextNumbers
set /p str1=<%~dp0%%a
:: Generate Log
:: FileName#BeforeReplace#AfterReplace(Text Extraction)
echo %%a#!str1!#!str!>>output.txt
)
endLocal
goto:eof
To test script, create 2 text files:
text.txt
Content:123456789012Greece123456789012
text1.txt
Content:123456789012Rome123456789012
After execution, open output.txt file and check the results.
I hope that script helps you in your problem.
See you
Re: IPO - batch
Posted: 26 Jan 2017 17:42
by xThule
thx for the input rodrigolima
beside the fact that Aacini already solved my problem the easiest way possible
your code will not work for me because i've got an alphanumerical code in the middle
the 10 symbols in the middle are numbers AND characters so i cant delete only numbers that would make my codes unusable for the following steps but thank you anyway =)