I have a script working great. However the script and the 'filelist.txt' file will reside in:
C:\Scripts
While the data files in the 'filelist.txt' file will reside in
C:\Data
So the resulting files will also reside in:
C:\Data
Do I just put the whole path in the 'filelist.txt' file or do I need to change script?
@echo off
setlocal EnableDelayedExpansion
REM get a file name and the YEAR column
for /F "tokens=1,2 delims=|" %%A in (filelist.txt) do call :Extract %%A %%B
exit /b
:Extract FileName YearColNo
set filename=%1
set colno=%2
@echo Processing file %filename%
REM Get the header line
set head=
for /F "usebackq delims=" %%F in ("%filename%") do if not defined head set head=%%F
REM Construct RegEx for matching the correct year column
set pat=
for /L %%L in (2,1,%colno%) do set "pat=!pat![^^|]*|"
set "pat=^^!pat!2004^|"
> 2004_%filename% echo,!head!
>>2004_%filename% findstr /R "%pat%" %filename%
REM Head will be added automatically
REM > Non_2004_%filename% findstr /V /R "%pat%" %filename%
exit /b
Windows BatchMicrosoft DOS
Last Comment
Bill Prew
8/22/2022 - Mon
Frosty555
You will run into problems near the end of the script if you put full pathnames into the 'filelist.txt' file.
The script appears to create new files prefixed with "2004_", and appends data to them. This will mess up if you use a full path because it will try to create a file that looks like this: "2004_C:\Data\somefile.txt", which isn't what you want.
The script will look in the "current directory" for any file operations that use a relative path, so it is easier if you CD to C:\Data inside your script, and then use relative file names inside of the 'filelist.txt'. If you do this, you'll need to make sure the FOR loop accesses "filelist.txt" using an absolute path, since it does not reside in C:\Data.
Example:
@echo off
setlocal EnableDelayedExpansion
cd C:\DATA
REM get a file name and the YEAR column
for /F "tokens=1,2 delims=|" %%A in (C:\Scripts\filelist.txt) do call :Extract %%A %%B
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
Experts Exchange has (a) saved my job multiple times, (b) saved me hours, days, and even weeks of work, and often (c) makes me look like a superhero! This place is MAGIC!
The script appears to create new files prefixed with "2004_", and appends data to them. This will mess up if you use a full path because it will try to create a file that looks like this: "2004_C:\Data\somefile.txt
The script will look in the "current directory" for any file operations that use a relative path, so it is easier if you CD to C:\Data inside your script, and then use relative file names inside of the 'filelist.txt'. If you do this, you'll need to make sure the FOR loop accesses "filelist.txt" using an absolute path, since it does not reside in C:\Data.
Example:
@echo off
setlocal EnableDelayedExpansion
cd C:\DATA
REM get a file name and the YEAR column
for /F "tokens=1,2 delims=|" %%A in (C:\Scripts\filelist.txt) do call :Extract %%A %%B
exit /b
..... rest of your script ....