Avatar of D B
D B
Flag for United States of America

asked on 

"Convert" LINUX Shell Script to Windows CMD Script

I have the following script that runs in LINUX and need to get it to run in Windows as a .bat file.
Basically, I have a number of files in a directory that have the same filename with the exception of a date component (e.g. "bubbleicious_daily_20151228.zip", "bubbleicious_daily_20151221.zip", ...) and I need to parse out the date portion, compare it with the 'next' file in the ring, and determine whether to keep it, (and set comparer to that date value) or delete it. When done, I will have only one file left, and it will be the one with the most current date. I cannot use the actual file creation/update dates, since the files could all be dumped at the same time and even out of actual date order. I have to go by the filename.

If necessary, I can use substring parsing instead of token parsing as all files will be identical in name except for the date.

#!/bin/bash

FILES=*.zip
comparer=""
for f in $FILES
do
  a="${f%.*}"
  b=`echo $a|awk -F "_" '{print $3}'|awk -F "." '{print $1}'`
  if [ "$comparer" == "" ]; then
        comparer=$b
        continue
  fi
  if [ $(date -d $b +"%Y%m%d") -lt $(date -d $comparer +"%Y%m%d") ]; then
        echo "File name containing $b is older than the file containing $comparer. Keeping the file containing $comparer and deleting the file containing $b. "
#        rm *$b*.zip
  elif [ $(date -d $b +"%Y%m%d") -eq $(date -d $comparer +"%Y%m%d") ]; then
        echo "Cannot decide which one is newer for ending with $b"
  else
        echo "File name containing $b is newer than the file containing $comparer. Keeping the file containing $b and deleting the file containing $comparer."
#        rm *$comparer*.zip
        comparer=$b
  fi
done

Open in new window

Windows BatchShell Scripting

Avatar of undefined
Last Comment
NVIT

8/22/2022 - Mon