Solved

piping a file name from a file into gzip

Posted on 2008-10-14
4
350 Views
Last Modified: 2012-05-05
Hi,
I am working on a cmd file that will do the following.  Take the most recent file in a directory and gzip it up into a specific zip name.  

I have a few of the pieces however I am stuck on trying to figure out how to pass / pipe the file name as input to gzip.

Here is what I have so far.

I was trying to break this down into testable pieces - and tried a few different things, in theory I could/would like to combine the commands back into one file.

>> 
dir c:\temp /a:-d /o-d /b > dirfiles.txt
head 1 dirfiles.txt

I have a file called head.bat  which I found on the web to mimic linux head.  It looks like this and seems to be working correctly

>>HEAD.BAT
@echo off
setlocal enabledelayedexpansion
if [%1] == [] goto usage
if [%2] == [] goto usage
SET /a counter=0
for /f "usebackq delims=" %%a in (%2) do (
   if "!counter!"=="%1" goto exit
   echo %%a
   set /a counter+=1)
   goto exit
 :usage
 echo Usage: head.bat COUNT FILENAME
:exit

In dirfiles.txt I have the following:
NewCustomProductPricingFix.sql
test.pdf
mydoc.doc

as I typed this I realized that the /b command on the dir that created the above text file resulted in the file name in the not having the full path to find it - that is a problem although when I manually edited the file to include it I was no better off.  

then I was at this point as I was trying to figure out what was wrong I tried
gzip < head 1 dirfiles.txt

and then I tried creating a cmd  called getrecentfile.cmd
head 1 dirfiles.txt

and tried
gzip < getrecentfile.cmd

no luck...

so a couple of things I need to be able to specifiy/hardcode the .gz name - like dbzip.gz because once it is zipped I have another script which is already working which will ftp it to a site that is expecting a  sepcific file name.

Allso the path to the file that is in the directory i sorted is in a different location then the script doing the the process so the full path will necesarry - either via the dir command or as a static part of the name/variable creation that is passed to gzip - the location will not change.  

I am basically nightly looking for the most recent database dump and trying to zip it up and ftp it to another location in an automated way.

thanks for you help!
Jerry
0
Comment
Question by:JerryRodgers
  • 3
4 Comments
 
LVL 43

Accepted Solution

by:
Steve Knight earned 500 total points
ID: 22731565
I think all you actually need is a for line.  Using for we can work on  adir listing to get the right file then pass the file to gzip:

@echo off
c:
cd \utils
for /f "tokens=*" %%a in ('dir /b /a-d /o-d /s') do set filename=%%a& goto next
:next
echo Filename of newset file to gzip is "%filename%"

By using for to look at the output of a dir command and take the first line into 'filename' then break out of the loop to the label :next with dir in reverse date order (newest first) you have your name.

hth

Steve
0
 
LVL 43

Expert Comment

by:Steve Knight
ID: 22731603
btw adding /s to a bare directory listing to search subdirs then includes the path, otherwise we can add other parts to the %%a to get the path etc -- see for /? and set /? for more info.
0
 

Author Closing Comment

by:JerryRodgers
ID: 31506111
the reply helped big time - all I needed to do was add this to complete my script

gzip "%filename%"
0
 
LVL 43

Expert Comment

by:Steve Knight
ID: 22765174
No problem, glad it helped.
0

Featured Post

NAS Cloud Backup Strategies

This article explains backup scenarios when using network storage. We review the so-called “3-2-1 strategy” and summarize the methods you can use to send NAS data to the cloud

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
How to search multiple patterms in a file with perl? 4 82
quick dos batch to update files. 3 58
Running Visio Macro from VBS File 3 78
WMIC Command LIne 5 28
The following is a collection of cases for strange behaviour when using advanced techniques in DOS batch files. You should have some basic experience in batch "programming", as I'm assuming some knowledge and not further explain the basics. For some…
Using dates in 'DOS' batch files has always been tricky as it has no built in ways of extracting date information.  There are many tricks using string manipulation to pull out parts of the %date% variable or output of the date /t command but these r…
This Micro Tutorial will give you a basic overview how to record your screen with Microsoft Expression Encoder. This program is still free and open for the public to download. This will be demonstrated using Microsoft Expression Encoder 4.
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …

809 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question