• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 333
  • Last Modified:

Modify Text File with Batch Script to Create Additional Files Based on Specific Text String in File

I have a text file where I have a defined set of variables that appear in a fixed position in each text record.

The original file location and output location will always be a fixed location: N:\DownloadedFiles\

The data I am evaluating is in positions 18-23 of each row.

If positions 18-23 contain VA8, copy row into a new text file with the following naming convention: VA8_MI186_yyyymmddhhmm.txt (hhmm in military time)

If positions 18-23 contain OH252, copy row into a new text file with the following naming convention: MI186_UPD_OH252_yyyymmdd.txt

If positions 18-23 contain MI3, copy row into a new text file with the following naming convention: MI186_UPD_MI3_yyyymmdd.txt
0
sparker1970
Asked:
sparker1970
  • 2
  • 2
1 Solution
 
sparker1970Author Commented:
Here is a HelperFile
HelperFile.txt
0
 
QlemoC++ DeveloperCommented:
This is a .cmd approach:
@echo off
setlocal EnableDelayedExpansion

set dt=!date:~-4,4!!date:~-10,2!!date:~-7,2!
set tm=!time:~0,2!!time:~3,2!

pushd N:\DownloadedFiles\
for /F "tokens=* delims=" %%L in (HelperFile.txt) do (
  set token=%%L
  set token=!token:~17,5!
  set target=
  if "!token!" == "  VA8" set target=VA8_MI186_%dt%%tm%.txt
  if "!token!" == "OH252" set target=MI186_UPD_OH252_%dt%.txt
  if "!token!" == "  MI3" set target=MI186_UPD_MI3_%dt%.txt
  if defined target (echo.%%L) >> !target!
)
popd

Open in new window

0
 
QlemoC++ DeveloperCommented:
... and a PowerShell one, with a slightly different algorithm:
set-location N:\DownloadedFiles\

$data = get-content HelperFile.txt

$data | ? { $_.Substring(17,5) -eq '  VA8' } | out-file "VA8_MI186_$(      get-date -format 'yyyyMMddhhmm').txt"
$data | ? { $_.Substring(17,5) -eq 'OH252' } | out-file "MI186_UPD_OH252_$(get-date -format 'yyyyMMdd'    ).txt"
$data | ? { $_.Substring(17,5) -eq '  MI3' } | out-file "MI186_UPD_MI3_$(  get-date -format 'yyyyMMdd'    ).txt"

Open in new window

0
 
sparker1970Author Commented:
This worked perfectly. Sorry for taking so long to respond. I was out of the office for a few weeks and just getting caught up on everything. I was trying to stick with a basic text/batch file so I did not test the PowerShell solution but some time in the future I may as I just picked up the Windows PowerShell Cookbook...to read in my spare time lol.

Thanks again, worked 100%!
0

Featured Post

Upgrade your Question Security!

Add Premium security features to your question to ensure its privacy or anonymity. Learn more about your ability to control Question Security today.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now